2

繰り返しフィールドを持つテーブルがあります。どの再発がn行目にあるかを数えて言う関数が必要です。すなわち;

表が次の場合;

ID  NAME  CLASS
---------------
 1  Tom    a
 2  Dick   b
 3  Harry  c  
 4  Marry  b
 5  Bob    c
 6  Mat    c
 7  Mandi  a

のような関数COUNT(class)は、各クラス値が発生した回数をカウントできます。しかし、次のような結果を出力する関数が必要です。

ID  NAME  CLASS (I_NEED) COUNT
--------------------------------
 1  Tom     a      1       2
 2  Dick    b      1       2
 3  Harry   c      1       3
 4  Marry   b      2       2
 5  Bob     c      2       3
 6  Mat     c      3       3
 7  Mandi   a      2       2

SQLServer2010R2を使用しています

どんなアイデアでも大いに役立ちます。よろしくお願いします!

4

1 に答える 1

5

私はこれがあなたが探しているものだと思います:

select id, 
       name, 
       class,
       row_number() over (partition by class order by id) as i_need,
       count(*) over (partition by class) as cnt
from the_table
order by id
于 2012-08-02T19:26:44.003 に答える