返回值为null

时间:2013-01-29 12:09:46

标签: sql isnull

我正在使用以下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

2 个答案:

答案 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