SQL:使用标识每个元组值的列创建一个查询

时间:2015-08-12 12:10:36

标签: sql sql-server

我一直在尝试为此SQL查询找到解决方案:

|A|   |B|      |Output|
===========================
1      A          1
1      A          1
1      B          2
1      C          3
2      C          1
2      D          2
2      F          3
2      H          4
3      D          1
3      D          1
3      I          2

如您所见,我想创建一个列(输出)来识别(不是计数或求和)每个(A,B)元组的出现,而不会删除重复出现的事件。

你会怎么做? 提前致谢

2 个答案:

答案 0 :(得分:1)

查找SQL Server内置DENSE_RANK()函数。

SELECT * 
      ,DENSE_RANK() OVER (PARTITION BY [A] ORDER BY [B] ASC) AS [OutPut]
FROM TableName 

答案 1 :(得分:0)

我想你想要dense_rank()

select t.*,
       dense_rank() over (partition by a order by b)
from table t;