0

次のような結果セットを生成するためにクエリする必要のあるテーブルがあります。

ColA ColB ColC
==== ==== ====
AA BC 1
AA BD 2
BB DD 1
BB EE 2
BB FF 3
CC AA 1

(この「架空の」サンプルよりも多くの行があります)

テーブルにはColA+ColBのみが存在し、ColCはクエリによって生成される必要があります。異なる「ColA」はそれぞれ、ColCでカウントを1にリセットする必要がありますが、ColAの次の値までカウントアップします。

MS/SQL2008を使用しています。

ありがとう-私は他の人が同様の質問をしたかどうかを確認するために検索しようとしました、そしてそれを利用するクエリを見ました:

row_number()over(ColA、ColBによる順序)

しかし、私が理解しているように、それはこの例のように1..6からのシーケンスリストを私に与えるだけですか?

4

2 に答える 2

0

行番号を分割する必要があります。各パーティションには、1、2、3、...行番号の独自のセットがあります。

row_number() over (partition by ColA order by ColB)
于 2013-03-24T21:35:05.970 に答える
0
SELECT
    ColA,
    ColB,
    row_number() over (partition by ColA order by ColB) as ColC
FROM
    Test

デモ

を追加ORDER BY ColAして、達成したい順序を強制することができます(ただし、デモでは必要ないことが示されています)。

于 2013-03-24T21:37:17.067 に答える