Sql 行号和分区查询返回所有排名为1的行

Sql 行号和分区查询返回所有排名为1的行,sql,sql-server,window-functions,Sql,Sql Server,Window Functions,我对一个查询有问题,我希望它根据上次更改记录的时间对结果进行排序 SELECT ROW_NUMBER() OVER (PARTITION BY ph.pricingHistoryId ORDER BY ph.changeRecorded DESC), ph.* FROM PriceHistory ph 它返回排名的所有1。行号应用于每个分区,并为下一个分区重置。您需要对要编号的组进行“分区”。如果您想在整个结果集中使用一个序列,请完全删除“PARTITION BY ph.prici

我对一个查询有问题,我希望它根据上次更改记录的时间对结果进行排序

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

它返回排名的所有1。

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

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

如果
pricingHistoryId
是主键,则按它划分总是将秩返回为1,因为不能有重复的主键

如果
pricingHistoryId
是主键,则按它进行分区总是将秩返回为1,因为不能有重复的主键

同意@Akhil。这意味着ph.pricingHistoryId是独一无二的。

同意@Akhil。这意味着pricingHistoryId博士是独一无二的。

pricingHistoryId博士是独一无二的吗?行号应用于每个分区,并为下一个分区重置。是的,它是唯一的-表的主键,然后您需要在要编号的组上进行分区。如果是整个集合,请删除整个“ph.PricinghHistoryid分区”部分。@Akhil谢谢-我刚才看到的示例中一定遗漏了什么。把它作为答案,我会标记为接受。你是说唯一的钥匙?如果它是主键,则所有分区都将返回结果1Is ph.pricingHistoryId unique?行号应用于每个分区,并为下一个分区重置。是的,它是唯一的-表的主键,然后您需要在要编号的组上进行分区。如果是整个集合,请删除整个“ph.PricinghHistoryid分区”部分。@Akhil谢谢-我刚才看到的示例中一定遗漏了什么。把它作为答案,我会标记为接受。你是说唯一的钥匙?如果它是主键,则所有分区都将返回结果1