【发布时间】:2014-11-10 11:34:38
【问题描述】:
SELECT
ac.ac_code,
(SELECT CASE
WHEN SUM(L.l_valuedr) - SUM(L.l_valuecr) >= 0 THEN SUM(L.l_valuedr) - SUM(L.l_valuecr)
ELSE 0
END AS dr,
CASE
WHEN SUM(L.l_valuedr) - SUM(L.l_valuecr) < 0 THEN SUM(L.l_valuecr) - SUM(L.l_valuedr)
ELSE 0
END AS cr
FROM Ledger AS L
WHERE (l_date < '09/08/2014')
AND (l_accode = ac.ac_code)
) AS bf,
CASE
WHEN SUM(Ledger_2.l_valuedr) - SUM(Ledger_2.l_valuecr) >= 0 THEN SUM(Ledger_2.l_valuedr) - SUM(Ledger_2.l_valuecr)
ELSE 0
END AS dr,
CASE
WHEN SUM(Ledger_2.l_valuedr) - SUM(Ledger_2.l_valuecr) < 0 THEN SUM(Ledger_2.l_valuecr) - SUM(Ledger_2.l_valuedr)
ELSE 0
END AS cr
FROM Ac_Accounts AS ac
INNER JOIN Ac_Costelements ON ac.ac_costelement = Ac_Costelements.ce_code
INNER JOIN Ledger AS Ledger_2 ON ac.ac_code = Ledger_2.l_accode
WHERE (Ledger_2.l_date >= '09/08/2014')
AND (Ledger_2.l_date <= '09/15/2014')
AND (Ledger_2.l_accode = ac.ac_code)
GROUP BY ac.ac_code
显示此错误:
消息 116,第 16 级,状态 1,第 5 行
当子查询不使用 EXISTS 引入时,选择列表中只能指定一个表达式。
【问题讨论】:
-
您的问题出在您的第二列。您有一个返回多个行和列的 select 语句
-
@paqogomez -- 以及不止一列,如错误消息所示。
-
尝试使用APPLY 代替 SQL 子查询,它允许您选择多个列。这是一个示例CROSS APPLY Explained
标签: sql sql-server