如何根据其他列计算重复项?

时间:2013-02-05 22:25:18

标签: sql sql-server database tsql

这是一个模仿我的场景的示例表:

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

我有两列,其中第1列具有不同的数值,第2列表示不同的类(a,b,c等)。在第3列中,我想根据第1列中的最大值/最低值对每个类进行计数并匹配0/1数。因此,如果在我的示例中,“a”只有两个值(在我们的示例中为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,如果这会有所不同。

1 个答案:

答案 0 :(得分:2)

select 
    col_1,
    col_2,
    row_number() over(
        partition by col_2 order by col_1
    ) - 1 as col3
from yourtablename