0

私のシナリオを模倣したサンプルテーブルを次に示します。

COL_1   COL_2       
1       a               
2       a               
9       b               
8       b               
11      b               

列 1 が異なる数値を持ち、列 2 が異なるクラス (a、b、c など) を表す 2 つの列があります。列 3 では、それらをクラスごとにカウントし、列 1 の最大値/最小値に基づいて 0/1 の数値と一致させたいと考えています。したがって、私の例でクラス「a」に値が 2 つしかない場合 (例 1 では2) 0 から 1 までカウントする必要があります (0 は列 1 の最小数を表し、1 は最大数を表します)。クラスbが3つのエントリで表されている場合、「b」クラスの列1の最大/最小の数字に基づいて、0/1/2の数字で一致させたいと思います。

クエリの後、次のようなものが必要です。

COL_1   COL_2   COL_3   
1       a       0       
2       a       1       
9       b       1       
8       b       0       
11      b       2       

言い換えると、列 2 にある重複の数を調べ、列 1 で表されている内容に基づいて最小値から最大値 (0 が最小) の値を与えるクエリが必要です。

これを手伝ってくれた人に感謝します。

*違いがあれば、私はMS SQLを使用しています。

4

1 に答える 1

2
select 
    col_1,
    col_2,
    row_number() over(
        partition by col_2 order by col_1
    ) - 1 as col3
from yourtablename
于 2013-02-05T22:42:49.913 に答える