我有一个包含 500,000 多行和以下列的表:
Symbol
, ExternalCode
, ExternalCodeType
,StartDate
Symbol
应该是唯一的,但不是。有一些行(~60)具有相同的值Symbol
但具有不同的ExternalCode
+StartDate
对。
我想创建一个唯一的表,这样,当有多个相同的条目时Symbol
,我只取最近的一个StartDate
。
有没有简单/优雅的方法来做到这一点?
我有一个包含 500,000 多行和以下列的表:
Symbol
, ExternalCode
, ExternalCodeType
,StartDate
Symbol
应该是唯一的,但不是。有一些行(~60)具有相同的值Symbol
但具有不同的ExternalCode
+StartDate
对。
我想创建一个唯一的表,这样,当有多个相同的条目时Symbol
,我只取最近的一个StartDate
。
有没有简单/优雅的方法来做到这一点?
在 SQL-Server 中,这可以在没有 JOINing 的情况下解决。
试试这个:
SELECT *
FROM (SELECT SYMBOL,
STARTDATE,
EXTERNALCODE,
EXTERNALCODETYPE,
Row_number()
OVER (
PARTITION BY SYMBOL
ORDER BY STARTDATE DESC) RN
FROM TABLENAME) T
WHERE T.RN = 1
ROW_NUMBER 函数启动一系列新的 'ID',按日期排序(因此最新的总是等于 1)并按符号分区,因此每个符号都有自己的一组 ID。
希望答案是明确的。