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倍。 –