尽管使用了所有适当的技术来确保重复的行真正重复(对所有字段应用修剪,将日期字段格式化为仅日期等),但在运行 SELECT DISTINCT
后,我仍然在结果中看到重复项。我什至尝试过 GROUP BY
,但是在运行它之后,仍然出现重复项。有没有人知道世界上正在发生什么,我能做些什么?
SELECT DISTINCT
ID, Address_Line_1, Address_Line_2, City, State, Zip,
to_date(START_DATE, 'DD-MON-YYYY') as START_DATE,
to_date(END_DATE, 'DD-MON-YYYY') as END_DATE
FROM
AddressHistory
ORDER BY
ID, START_DATE DESC;
答案 0 :(得分:1)
试试
SELECT DISTINCT
ID, Address_Line_1, Address_Line_2, City, State, Zip,
trunc(to_date(START_DATE, 'DD-MON-YYYY')) as START_DATE,
trunc(to_date(END_DATE, 'DD-MON-YYYY')) as END_DATE FROM
AddressHistory
ORDER BY ID, START_DATE DESC;
这会截断日期的时间,并且比类型转换要快。
在您的示例中,START_DATE 是什么数据类型?也许你可以完全摆脱类型转换?
答案 1 :(得分:0)
这是因为您的列 START_DATE
和 END_DATE
中的时间因素不同,如果您编写如下查询,您应该会有所不同。
SELECT DISTINCT * FROM
(
SELECT ID, Address_Line_1, Address_Line_2, City, State, Zip, to_date(START_DATE, 'DD-MON-YYYY') as START_DATE, to_date(END_DATE, 'DD-MON-YYYY') as END_DATE
FROM AddressHistory
)T
ORDER BY ID, START_DATE desc;