从重复表中创建唯一值的表

时间:2012-10-18 08:55:28

标签: sql

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

SymbolExternalCodeExternalCodeTypeStartDate

Symbol应该是唯一的,但事实并非如此。 有少量行(~60)对Symbol具有相同的值,但具有不同的ExternalCode + StartDate对。

我想创建一个独特的表格,以便当同一个Symbol有多个条目时,我只会使用最新的StartDate

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

1 个答案:

答案 0 :(得分:1)

在SQL-Server中,这可以在没有JOIN的情况下解决 试试这个:

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

希望答案清楚。