我遇到查詢問題,我希望它根據最後一次更改記錄的時間對結果進行排名。ROW_NUMBER和PARTITION查詢返回排名爲1的所有行
SELECT
ROW_NUMBER() OVER (PARTITION BY ph.pricingHistoryId ORDER BY ph.changeRecorded DESC),
ph.*
FROM
PriceHistory ph
它返回所有1的排名。
我遇到查詢問題,我希望它根據最後一次更改記錄的時間對結果進行排名。ROW_NUMBER和PARTITION查詢返回排名爲1的所有行
SELECT
ROW_NUMBER() OVER (PARTITION BY ph.pricingHistoryId ORDER BY ph.changeRecorded DESC),
ph.*
FROM
PriceHistory ph
它返回所有1的排名。
如果pricingHistoryId
是主鍵,通過它進行分區總是返回秩爲1,因爲不能有重複的主鍵!
將行號應用於每個分區並重置爲下一個分區。你需要「劃分」你想要編號的組。如果您希望在整個結果集中使用一個序列,請完全刪除「PARTITION BY ph.pricingHistoryId」,只保留「ORDER BY」部分。
同意@Akhil。這意味着ph.pricingHistoryId是唯一的。
是ph.pricingHistoryId是否唯一?行號應用於每個分區併爲下一個分區重置。 – Glenn 2012-02-02 00:54:54
是的,它是唯一的 - 表的主鍵 – Sam 2012-02-02 00:55:12
然後,你需要分割你想要編號的組。如果整個設置,刪除整個「PARTITION BY ph.pricingHistoryId」部分。 – Glenn 2012-02-02 00:57:34