2017-03-02 4 views
0

私は3つのテーブルinvoice i,trans tおよびarnotes aを持っています。 3つのテーブルにはいずれもreference_numの列があります。レコードはi,t、時にはaに存在します。 itにすべてのレコードを取り込み、aにレコードがある場合は、reasonのデータを表示します。sqlはレコードが2番目のテーブルから引き出されないようにするために結合を残しました

さらに、私はDISTINCT結果のみを必要とします。私は現在次のようなことがありますが、それは3つすべてに存在するレコードを返すだけです。 aにレコードがない場合、レコードはitから引っ張られておらず、reasonにはnullが表示されているため、レコードはまったく引き出されていません。助けてください?

SELECT DISTINCT i.BT_ID, 
    i.ST_ID, 
    i.REFERENCE_NUM, 
    i.INVOICE_DATE, 
    i.BALANCE, 
    t.GL_ACCOUNT, 
    a.REASON 
FROM Invoice i 
INNER JOIN Trans t ON i.REFERENCE_NUM = t.INVOICE_REFERENCE_NUM 
LEFT OUTER JOIN ARNOTES a ON t.INVOICE_REFERENCE_NUM = a.INVOICE_NUM 
WHERE (i.BALANCE > 0) 
    AND (t.GL_ACCOUNT <> '') 
    AND (t.TRANSACTION_TYPE = 'dist') 
    AND (NOT (a.REASON LIKE '%COLLECTIONS%')) 

答えて

2

not a.REASON like '%COLLECTIONS%'left joinを内部結合にしています。次のようにON句に移動します。

select distinct i.BT_ID, 
    i.ST_ID, 
    i.REFERENCE_NUM, 
    i.INVOICE_DATE, 
    i.BALANCE, 
    t.GL_ACCOUNT, 
    a.REASON 
from Invoice i 
inner join Trans t on i.REFERENCE_NUM = t.INVOICE_REFERENCE_NUM 
left outer join ARNOTES a on t.INVOICE_REFERENCE_NUM = a.INVOICE_NUM 
    and a.REASON not like '%COLLECTIONS%' 
where i.BALANCE > 0 
    and t.GL_ACCOUNT <> '' 
    and t.TRANSACTION_TYPE = 'dist' 
+0

あああ!それがそれでした。ありがとうございました! –

関連する問題