0

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

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,如果这有什么不同的话。

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 回答