myTable具有由列A和B(總列A,B,C,D,E)組成的組合鍵。幫助需要一個複雜的自連接sql查詢
我想要排除/忽略D(例如訂單號)的值相同且E(例如決策)在Y中是一個,但N或Null在其他中的記錄。 (意味着所有具有相同訂單號(等於D值)的雙記錄首先被排序(因此E = Y)然後再被取消(因此E = N)應該被忽略)
因此,我拔出A, B中的所有記錄,其中d是相同的,但E是的Y和n之一在其他
SELECT *
FROM myTable A, myTable B
WHERE
(A.D=B.D)
AND
((A.E ='Y' AND (B.E ='N' OR B.E IS NULL)) OR (B.E='Y' AND (A.E='N' OR A.E IS NULL)))
現在我的最終輸出應爲myTable的所有記錄,但上面沒有發現的記錄。
我寫了一個連接查詢,但它不工作,因爲它應該。基本問題是如何比較兩個複合鍵?
樣本數據:
A B C D E
=========================
1 A xyz ONE Y
2 B pqr TWO Y
3 C lmn ONE N
4 D abc THREE Y
5 E ijk FOUR Y
=========================
因此,我的輸出應記錄2,4和5。1和3將被忽略。由於1.D = 3.D和1.E爲Y,但3.E是N.
感謝, 聶
究竟是你想怎麼辦,爲什麼不從myTable的寫 SELECT * WHERE CANCEL_FLAG =「XYZ」 如果我理解正確的,你想要什麼!? – elevener
@elevener:更新了問題 – Nik
您可以提供一些示例數據,然後針對該示例數據給出您想要的結果嗎?這會使你的問題容易理解30倍。 –