ROW_NUMBER和PARTITION查询返回排名为1的所有行

时间:2012-02-02 00:52:49

标签: sql sql-server window-functions

我遇到查询问题,我希望它根据记录最后一次更改的时间对结果进行排名。

SELECT
  ROW_NUMBER() OVER (PARTITION BY ph.pricingHistoryId ORDER BY ph.changeRecorded DESC),
  ph.*
FROM
  PriceHistory ph

它返回所有1的排名。

3 个答案:

答案 0 :(得分:4)

如果pricingHistoryId是主键,则按其分区始终将等级返回为1,因为不能有重复的主键!

答案 1 :(得分:1)

行号应用于每个分区并重置为下一个分区。您需要“分区”您想要编号的组。如果您想在整个结果集中使用一个序列,请完全删除“PARTITION BY ph.pricingHistoryId”并保留“ORDER BY”部分。

答案 2 :(得分:0)

同意@Akhil。这意味着ph.pricingHistoryId是唯一的。