2017-07-13 40 views
0

表:一個如何分配順序號在SQL Server

p_id | order | date 
-----+-------+--------------- 
1 | 0 | 2014-01-12 
1 | 1 | 2015-02-13 

我要指派基於最新日期倒序的順序。

例如,如果我收到的2017年7月14日相同的p_id的記錄,我想分配秩序= 2

我該怎麼辦呢?

感謝

+0

您應該很可能只是使用標識列而不是手動計算。 –

+0

@underscore_d爲什麼身份專欄在這裏有意義?他們似乎在詢問如何根據'p_id'插入一個增量值。 – Siyual

+1

@Siyual當第一句簡單地是_「我想根據最新日期按降序排列順序時,這是輕而易舉的錯誤。」_ –

回答

4

你並不需要存儲訂單,因爲訂單的標準是日期

SELECT p_id, date FROM A ORDER BY date 

如果你需要一個0,1,2,否則等於是

SELECT 
    p_id, date, 
    order = ROW_NUMBER() OVER (PARTITION BY p_id ORDER BY date) 
FROM A 
ORDER BY date 

order可能是標識列以自動生成一個數字

+2

可能希望將「PARTITION BY p_id」添加到「OVER」子句,並且「ROW_NUMBER()」默認爲「1」,而不是「0」。 – Siyual

+0

@Siyual:已添加。我們還沒有完整的信息 – gbn