运行 SELECT DISTINCT 后,重复项仍然显示

时间:2021-01-04 05:10:24

标签: oracle select duplicates distinct

尽管使用了所有适当的技术来确保重复的行真正重复(对所有字段应用修剪,将日期字段格式化为仅日期等),但在运行 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;

enter image description here

2 个答案:

答案 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_DATEEND_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;