1

私は次のSQLステートメントを使用しています。値がない場合はnull値を返すようにしたいので、「合体」しますが、1つの問題があります-機能しません:)

おそらく行が存在しないためだと思うので、次のステートメントにその条件をどのように追加しますか?

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
4

2 に答える 2

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
于 2013-01-29T12:17:07.330 に答える
1

合体を isnull に置き換えてみてください。合体を含む式は、引き続き null と見なすことができます。MSDN リファレンス

于 2013-01-29T12:18:26.740 に答える