最近我在做一個專案,需要添加一列來對現有記錄進行排序。為了澄清這個主題,我將舉一個小例子。假設我們有一張表來存盤 Corona 疫苗注射中心的名稱,還有一張表來登記來到每個中心的人。收集資料后,我們得出的結論是,要管理輪次順序,必須在 Person 表中添加“Order”列。如何通過撰寫查詢來做到這一點而不會丟失迄今為止收集的資料?
這是中心的表:

這是人員表:

我期望的是這樣的:

PS:我使用SQL來創建表和存盤資料。
uj5u.com熱心網友回復:
我將使用動態創建的 Order 列為此創建一個視圖。
是順序還是順序?我會避免使用“訂單”,因為它是一個保留字。
Create view PersonSequence as
Select Id, Name, CentreId,
row_number() over (partition by CentreId order by Id) as Sequence
from Person
要更新您可以執行的現有表
alter table Person add Seq int;
with u as (
Select *,
row_number() over (partition by CentreId order by Id) as rn
from Person
)
update u
set seq=rn;
見小提琴示例
uj5u.com熱心網友回復:
select Id,
Name,
CenterID,ROW_NUMBER() over (partition by CenterId order by Id) as Order
from person
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/367513.html
