akhter86 Ответов: 1

Только одно выражение может быть указано в списке выбора, если подзапрос не представлен с помощью EXISTS.


я получаю ошибку ,упомянутую в вопросе
With cte1 As
(
    SELECT
        IsNull(l.I_Amt - Sum(R.Cheque_Amount), l.I_Amt) as Previous_Balance, 
        l.Im_ID as ID
    FROM
        tbl_IB_Cus_Libility l
        LEFT JOIN tbl_Received R ON R.LI_ID = l.LI_ID
    WHERE
        l.Im_ID = 14 
    AND 
        (l.I_Status = 1 OR l.I_Status Is Null) 
    AND
        L.L_Delid Is Null
    GROUP BY
        l.Im_ID,
        l.I_Amt
),
cte As
(
    SELECT 
        (
            SELECT
                IsNull(l.i_amt-Sum(r.cheque_amount), l.i_amt), 
                l.im_id 
            FROM
                tbl_ib_cus_libility l 
                LEFT JOIN tbl_received R ON r.li_id = l.li_id 
            WHERE
                l.im_id=14 
            AND
                (l.i_status = 1 OR l.i_status IS NULL) 
            AND
                l.l_delid IS NULL 
            AND
                l.li_id < 
                ( 
                    SELECT Max(sub.li_id) 
                    FROM tbl_ib_cus_libility AS sub
                ) 
          GROUP BY
              l.im_id,
              l.i_amt 
        ) as Balance,
        Previous_Balance,
        ID
    FROM
        cte1
)
SELECT
    Sum(Previous_Balance) as GrandTotal,
    (Balance) as Running_Total,
    ID
FROM
    cte
GROUP BY
    Balance,
    id


Что я уже пробовал:

Я много пытался решить эту проблему, но ничего не получалось, поэтому я прошу здесь решения.

Sandeep Mewara

Это немного трудно прочитать запрос и то, что вы пытаетесь достичь. Однако ясно, что вы получаете ошибку. Взгляните на эту объясняющую ошибку и решите ее: http://www.sql-server-helper.com/error-messages/msg-116.aspx

1 Ответов

Рейтинг:
4

Richard Deeming

Цитата:
SELECT 
    (
        SELECT
            IsNull(l.i_amt-Sum(r.cheque_amount), l.i_amt), 
            l.im_id 
        FROM
            tbl_ib_cus_libility l 
            LEFT JOIN tbl_received R ON r.li_id = l.li_id 
        WHERE
            l.im_id=14 
        AND
            (l.i_status = 1 OR l.i_status IS NULL) 
        AND
            l.l_delid IS NULL 
        AND
            l.li_id < 
            ( 
                SELECT Max(sub.li_id) 
                FROM tbl_ib_cus_libility AS sub
            ) 
      GROUP BY
          l.im_id,
          l.i_amt 
    ) as Balance,
Ошибка вызвана этой строкой. Вы выбираете два столбца и пытаетесь вернуть их в один столбец.

То GROUP BY предложение также предполагает, что вы ожидаете, что это вернет несколько строк. Это не сработает - вы можете вернуть только одну строку, содержащую один столбец.

Не совсем понятно, чего вы здесь добиваетесь.


Maciej Los

5ed!