当某行具有某个值时,我需要对输出表进行分区。我有:
Value|User
----------
A |Rick
A |Rick
B |Rick
C |Rick
A |Joe
B |Joe
B |Joe
我需要为每个用户对表进行分区,并且当值= A时,所以我需要的是:
Row|Value|User
---------------
1 |A |Rick
1 |A |Rick
2 |B |Rick
3 |C |Rick
1 |A |Joe
2 |B |Joe
3 |B |Joe
每个值都有其自己的ID。
我尝试过类似的事情:
SELECT ROW_NUMBER() OVER(PARTITION BY User, Value = A ORDER BY ID ASC) AS Row, Value, User FROM...
SELECT ROW_NUMBER() OVER(PARTITION BY User, WHERE Value = A ORDER BY ID ASC) AS Row, Value, User FROM...
etc
但是,即使有可能,我似乎也无法弄清楚如何正确编写。
DENSE_RANK
:DENSE_RANK() OVER (PARTITION BY [User] ORDER BY [Value] ASC) AS [Row]
注意
USER
是T-SQL中的保留关键字。我强烈建议您为列选择一个不同的名称,否则您必须定界以标识它。ROW
和VALUE
当前尚未保留,但它们被列为Future Keyword,因此也建议避免使用它们。