运行 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_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;
尝试
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 是什么数据类型?也许您可以完全摆脱类型转换?
在 运行 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_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;
尝试
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 是什么数据类型?也许您可以完全摆脱类型转换?