大家早上好;
我有下表
Date Duration COT TD RID
6/26 30 PT OT 1
6/26 15 OT PT 1
6/27 60 PT OT 1
6/27 60 OT PT 1
6/28 15 SS MM 1
6/28 30 SS MM 1
6/28 15 MM SS 1
6/28 30 MM SS 1
我想要做的是通过加入表本身来拉记录,其中以下情况属实:
- T1.TD = T2.COT
- T1.COT = T2.TD
- T1.持续时间 <> T2.持续时间
- T1.Date = T2.Date
- T1.RID = T2.RID
T1 和 T2 是同一张表。到目前为止,我所拥有的是:
SELECT *
FROM T1
WHERE NOT EXISTS (SELECT 1 FROM T2
WHERE T1.Date = T2.Date
AND T1.COT = T2.TD
AND T1.TD = T2.COT
AND T1.RID = T2.RID
AND T1.Duration = T2.Duration)
显然,上面得到了 2 行,因为 2 行符合该标准。但是,我真的只想从表中获取一行。有没有办法做到这一点,或者可能有不同的方法来做到这一点?
编辑:添加了其他行 - 不应选择任何行。即使有些行在 6/28 上不匹配,但它们确实匹配 - 第 1 行和第 3 行、第 2 行和第 4 行匹配 6/28,因此应从最终数据集中限制。换句话说,如果 RID 在一天中有任何匹配的记录,则不要选择它们。