1

500,000 行以上と次の列を持つテーブルがあります。

SymbolExternalCodeExternalCodeTypeStartDate

Symbol一意である必要がありますが、そうではありません。値が同じで+ペアSymbolが異なる少数の行 (~60) があります。ExternalCodeStartDate

一意のテーブルを作成して、同じエントリが複数ある場合に、Symbol最新のエントリのみを取得したいと考えていますStartDate

これを行うためのシンプルでエレガントな方法はありますか?

4

1 に答える 1

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 関数は、日付順に並べ替えられ (最新が常に 1 になるように)、シンボルごとに分割された一連の新しい ID を開始し、各シンボルが独自の ID セットを持つようにします。

答えが明確であることを願っています。

于 2012-10-18T09:13:49.700 に答える