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

After running SELECT DISTINCT, duplicates still show

在 运行 SELECT DISTINCT 之后,我仍然在结果中看到重复项,尽管使用了所有适当的技术来确保重复行确实重复(将 trim 应用于所有字段,格式化日期字段仅作为日期等)。我什至尝试了 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;

这是因为您的列 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; 

尝试

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 是什么数据类型?也许您可以完全摆脱类型转换?