1

我有一个包含 500,000 多行和以下列的表:

Symbol, ExternalCode, ExternalCodeType,StartDate

Symbol应该是唯一的,但不是。有一些行(~60)具有相同的值Symbol但具有不同的ExternalCode+StartDate对。

我想创建一个唯一的表,这样,当有多个相同的条目时Symbol,我只取最近的一个StartDate

有没有简单/优雅的方法来做到这一点?

4

1 回答 1

1

在 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。

希望答案是明确的。

于 2012-10-18T09:13:49.700 回答