我正在使用以下SQL语句,我希望它返回null值,如果没有任何值因此“Coalesce”,我有一个问题,但它不起作用:)
我想也许是因为该行不存在,所以我如何将该条件添加到以下语句中?
SELECT
D1.dr,
D1.cr,
D1.asset_no,
(open_bal + dr - cr) AS closing_balance
FROM (SELECT
COALESCE(SUM(dr_amount), 0) AS dr,
COALESCE(SUM(cr_amount), 0) AS cr,
asset_no
FROM posting, sysasset
WHERE posting.asset_no = @AssetNumber
AND period >= asset_open_per
GROUP BY asset_no) AS D1, asset
WHERE D1.asset_no = asset.asset_no
答案 0 :(得分:1)
哦,我认为记录没有显示,因为其中一些记录不存在吗?未显示的原因是您使用INNER JOIN
加入他们,请尝试使用LEFT OUTER JOIN
。
SELECT D1.dr,
D1.cr,
D1.asset_no,
(COALESCE(open_bal,0) + dr - cr) AS closing_balance
FROM
(
SELECT COALESCE(SUM(dr_amount), 0) AS dr,
COALESCE(SUM(cr_amount), 0) AS cr,
asset_no
FROM posting
LEFT JOIN sysasset
ON posting.asset_no = asset.asset_no
WHERE posting.asset_no = @AssetNumber AND
period >= asset_open_per
GROUP BY asset_no
) AS D1
LEFT JOIN asset
ON D1.asset_no = asset.asset_no
答案 1 :(得分:1)
尝试用isnull替换coalesce。具有合并的表达式仍可视为空。 MSDN ref