【发布时间】:2014-06-24 15:25:38
【问题描述】:
我有一个表table1下面是数据的样子。
Column1 是我另一个表的外键。
Column1 Column2 Column3
1 A 06/MAY/14
1 A 05/MAY/14
1 B 06/MAY/14
1 B 01/JAN/00
1 A 01/JAN/00
现在我想找到满足以下条件的不同 column1 值。
1.atleast 一条记录,其中 column2 应为 A,column3 应为 (sysdate - 1)
与
2.atleast 一条记录,其中 column2 应为 B,column3 应为 (sysdate - 1)
意思是 A 和 B 的第 3 列应填充 (sysdate - 1)
我已经写了下面的查询,如果我做错了什么,请告诉我。
我也想知道我的加入方式是否正确。该表包含大约 50K 条记录,我猜性能应该没问题。
SELECT DISTINCT COLUMN1 FROM
TABLE1 A
JOIN
TABLE1 B ON (A.COLUMN1 = B.COLUMN1)
WHERE
((TRUNC(A.COLUMN3) - TRUNC(A.COLUMN3) = 0)
AND TRUNC(A.COLUMN3) = TRUNC(SYSDATE - 1)
AND TRUNC(B.COLUMN3) = TRUNC(SYSDATE - 1)
AND A.COLUMN2 = 'A'
AND B.COLUMN2 = 'B'
AND TO_CHAR(A.COLUMN3, 'DD-MON-YY') != '01-JAN-00'
AND TO_CHAR(B.COLUMN3, 'DD-MON-YY') != '01-JAN-00'
);
【问题讨论】: