【问题标题】:How to get same rownumber() for same values如何为相同的值获取相同的 rownumber()
【发布时间】:2019-09-17 20:40:37
【问题描述】:

如果值在列week 和desc 中重复,我需要获得相同的行号。对于下表:

week desc
1 ff
1 ss
1 ss
2 ff
2 ss
4 ff
4 ff
4 ss
4 ss

预期结果是:

week desc rownum
1 ff 1
1 ss 2
1 ss 2
2 ff 1
2 ss 2
4 ff 1
4 ff 1
4 ss 2
4 ss 2

【问题讨论】:

  • 如何将 FF 行而不是 ss 行编码为 Rownum = 1?

标签: sql sql-server tsql window-functions


【解决方案1】:

你想要DENSE_RANK 而不是ROW_NUMBER:

SELECT Week
     , [Desc]
     , DENSE_RANK() OVER (PARTITION BY Week ORDER BY [Desc]) AS [Rank #]
FROM t

DENSE_RANK 和RANK 将相同的值分配给按列顺序排列的行。 DENSE_RANK 还分配“密集”排名数字而不是“间隔”数字。

【讨论】:

  • 好答案。您只忘记了第三列的别名。 ;) 但我同意 RowNum 可能不是这些查询结果的最佳列别名。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-07
  • 2011-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-16
相关资源
最近更新 更多