早上好,从多个比较表中获取单个结果
我有以下表
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.Duration <> T2.Duration
- T1.Date = T 2.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在一天中有任何匹配记录,则不要选择它们。
正如你所说,你确实会根据你的标准得到两行。如果你想得到一个单行你想获得两个哪一个,并基于哪些额外的标准? – melc
任何一行都可以,因为两者都包含我需要的信息。因此,无论哪个更容易拉动 – user2271146
为什么你说没有你的新行应该被选中? 6/28行符合你提到的所有标准。还有没有规定的另一个规则? – Harrison