2016-03-31 5 views
1

私はSQL左は0

select dout_qty_issue from inv_dout where b.CREATEDDATE > '01-MAR-2016' and b.CREATEDDATE < '01-APR-2016' 

は、クエリからのデータがないが

だから、結果がありますのでときnull値があり、この

SELECT 
    a.STOCK_ITEM_NO, a.STOCK_BEG_QTY, b.DOUT_QTY_ISSUE 
FROM 
    INV_STOCK AS a 
    LEFT OUTER JOIN INV_DOUT AS b 
    ON a.STOCK_ITEM_NO = b.DOUT_ITEM_NO 
WHERE a.STOCK_ITEM_NO = 'ABC01' 
    AND b.CREATEDDATE > '01-MAR-2016' 
    AND b.CREATEDDATE < '01-APR-2016' 

ようなクエリ持つヌル結果リターンで参加します参加していないので空いています(私は思います) しかし、それは戻ってくることができますか?

'ABC01' | 10 | 0 

今問合せの戻り

null | null| null 
+0

クラウドには2つのテーブル構造を示してください。 – Kason

+0

'where'句は' left join'を 'inner join'に変換します。おそらく、フィルタ条件ではなく、結合条件として 'createddate'条件を指定したことがあります。 – HoneyBadger

+0

@Mikeそれは参加に失敗していません。あなたの 'WHERE'基準は' INV_DOUT'テーブルの列にあり、その日付範囲のデータがないので結果が得られません。 'WHERE'基準を再構築する必要があります。 –

答えて

0

LEFT JOIN内に日付WHERE文を入れます。

SELECT a.STOCK_ITEM_NO,a.STOCK_BEG_QTY, b.DOUT_QTY_ISSUE 
FROM INV_STOCK a 
LEFT OUTER JOIN INV_DOUT b ON a.STOCK_ITEM_NO = b.DOUT_ITEM_NO 
AND b.CREATEDDATE BETWEEN '01-MAR-2016' AND '01-APR-2016' 
WHERE a.STOCK_ITEM_NO = 'ABC01' 
3
SELECT a.STOCK_ITEM_NO 
     ,a.STOCK_BEG_QTY 
     ,ISNULL(b.DOUT_QTY_ISSUE,0) as DOUT_QTY_ISSUE 
FROM INV_STOCK AS a 
LEFT JOIN INV_DOUT AS b 
    ON a.STOCK_ITEM_NO = b.DOUT_ITEM_NO 
     AND b.CREATEDDATE > '01-MAR-2016' 
     AND b.CREATEDDATE < '01-APR-2016' 
WHERE a.STOCK_ITEM_NO = 'ABC01' 

ための条件が参加する場所を入れて、あなたは何を望むかを表示することができます。

1

これを試してください。左結合テーブルのフィルタをWHEREからON節に移動してください。

SELECT a.STOCK_ITEM_NO, a.STOCK_BEG_QTY, ISNULL(b.DOUT_QTY_ISSUE,0) DOUT_QTY_ISSUE 
FROM 
    INV_STOCK AS a 
    LEFT OUTER JOIN INV_DOUT AS b 
    ON a.STOCK_ITEM_NO = b.DOUT_ITEM_NO 
    AND b.CREATEDDATE > '01-MAR-2016' 
    AND b.CREATEDDATE < '01-APR-2016' 
WHERE a.STOCK_ITEM_NO = 'ABC01'