1

単純な問題のように思われることがありますが、もちろんそうではありません。

次のようなデータがあります(パイプ区切りで表示しています):

Identifier | Roll Up | Sequence

1234       | 4567    | 1

1234       | 4567    | 2

1235       | 4567    | 1

1235       | 4567    | 2

1236       | 6789    | 1

1237       | 6789    | 1

したがって、識別子はロールアップフィールドの「バージョン」であり、各ロールアップフィールドにはシーケンスがあります。

私がする必要があるのは、ロールアップの「バージョン」をカウントする追加の列を用意することです。

Version |Identifier | Roll Up | Sequence

1       |1234       | 4567    | 1

1       |1234       | 4567    | 2

2       |1235       | 4567    | 1

2       |1235       | 4567    | 2

1       |1236       | 6789    | 1

2       |1237       | 6789    | 1

ロールアップごとに各識別子を単純に数えると思いましたが、COUNT()またはを使用して正しくカウントすることはできませんでした。ROW_NUMBER().

誰かがその派生列の解決策を持っていますか?

どうもありがとう、ターナー。

4

1 に答える 1

2

次のように、単純なクエリに列を追加します。

row_number() over (partition by Identifier, Roll_Up order by Identifier, Roll_Up)

最終結果を生成するスクリプトになると思います。

SELECT  t0.*, count1
FROM  Test AS t0 INNER JOIN
  (SELECT Identifier1, ROLLUP1,
     Row_Number() Over
   (Partition BY Identifier1, Rollup1
    ORDER BY Identifier1, RollUp1) AS count1
   FROM Test
   ) AS t1
  ON t0.Identifier1 = t1.Identifier1
  AND t0.ROLLUP1 = t1.ROLLUP1
于 2012-11-29T19:40:38.370 に答える