2

インポート手順で中間テーブルに重複するエントリの整数カウンターを作成したいと考えています。FinalTable次のようなというテーブルがあるとします。

FinalTable

ID       Date          SameDateCounter
1003     2012/01/01    NULL
1004     2012/02/01    NULL
1005     2012/03/01    1
1006     2012/03/01    2
1007     2012/03/01    3
1008     2012/04/01    1
1009     2012/04/01    2

に一意の制約があり(Date, SameDateCounter)ます。中間ステップでは、データは にあり、制約がないことを除いてIntermediateTableまったく同じように見えます。FinalTableしたがって、この問題の出発点は次のとおりです。

IntermediateTable:

ID       Date          SameDateCounter
1003     2012/01/01    NULL
1004     2012/02/01    NULL
1005     2012/03/01    NULL
1006     2012/03/01    NULL
1007     2012/03/01    NULL
1008     2012/04/01    NULL
1009     2012/04/01    NULL

そして、SameDateCounter の値を、日付が複数回出現する 1 から開始して生成する必要があります。

4

1 に答える 1

3

関数を句ROW_NUMBER()と組み合わせて使用​​できます。PARTITION BY

;WITH Data AS
(  
   SELECT
       ID, Date,
       SameDateCounter = ROW_NUMBER() OVER (PARTITION BY Date ORDER BY ID DESC)
   FROM dbo.YourTableNameHere
)
SELECT *
FROM Data

このPARTITION BY Date句は、 のすべての個別の値をDate独自の「パーティション」にグループ化ROW_NUMBER()し、各パーティションに 1 から始まる番号を割り当てます。

したがって、SameDayCounter新しい日ごとに 1 から始まり、その特定の日の行が表示されます。

于 2012-06-22T10:19:49.143 に答える