0

ローンを持っているが、dda がなく、actype L の場合を除き、関連する actype がない custid を表示するには、どうすれば選択できますか? 共同関連 (cfrela = J) であっても、dda 関係のないレコードを探しています。以下のように、A123 と B128 は資格がありますが、関連する A123 D actype は、DDA アカウントとの共同関係のために資格を失います。L=ローン、D=DDA、S=貯蓄

SELECT loans.custid, dda.custid, related.custid
FROM data.lnmast lnmast 
EXCEPTION JOIN data.dda dda         
ON loans.custid = dda.custid
JOIN data.related related
ON loans.custid = related.custid

LOANS       
custid(c)   actype(c)   
A123           L    
B128           L    

DDA     
custid(c)   actype(c)   
A125           D    

RELATED     
custid(c)   actype(c) cfrela(c)
A123          D         J
A123          L         P
A123          S         J
B128          L         P
B128          L         P
4

2 に答える 2

1

私があなたの質問を正しく理解していれば、dda テーブルには存在せず、actype = L の関連テーブルにのみ存在する顧客 ID を表示したいですか?

SELECT L.CustId
FROM Loans L 
   LEFT JOIN Related R ON L.custid = R.custId AND R.actype <> 'L'
   LEFT JOIN DDA D ON L.custid = D.custid
WHERE d.custid IS NULL AND R.custid is NULL

関連テーブルにレコードが必要な場合は、INNER JOIN をもう 1 つ追加します。

SELECT DISTINCT L.CustId
FROM Loans L 
   INNER JOIN Related R1 ON L.custid = R1.custId AND R1.actype = 'L'
   LEFT JOIN Related R ON L.custid = R.custId AND R.actype <> 'L'
   LEFT JOIN DDA D ON L.custid = D.custid
WHERE d.custid IS NULL AND R.custid is NULL

お役に立てれば。

于 2013-02-11T22:14:33.133 に答える
0

これにアプローチする 1 つの方法は、次のleft outer joinとおりです。

select l.*
from data.lnmast l left outer join
     (select *
      from data.dda
      where actype <> 'L'
     ) dda
     on l.custid = dda.custid left outer join
     data.related r
     on l.custid = dda.custid
where dda.custid is null and r.custid is null   

次に、where句は、ロジックに従って、一致しないレコードを選択します。

于 2013-02-11T22:14:01.180 に答える