我正在爲快遞服務解決一個問題,它們有不同的路線,每個路線可以有n個包裹。他們將兩個包裹放在一個包裏。我設法得到這樣的數據:使用下面的查詢使用另一個列值組更新列值
Route | ParcelId | GroupId |
-------|----------|---------
NORTH | P1 | 1 |
NORTH | P2 | 1 |
NORTH | P3 | 2 |
NORTH | P4 | 2 |
NORTH | P5 | 3 |
EAST | P6 | 1 |
EAST | P7 | 1 |
EAST | P8 | 2 |
CENTRAL| P9 | 1 |
CENTRAL| P10 | 1 |
CENTRAL| P11 | 2 |
CENTRAL| P11 | 2 |
-------|----------|---------|
:從北路線和P6
select
Route, ParcelId
-- calculate the group number for every 2 parcels, increment 1
ceiling(row_number() over(partition by route order by ParcelId)/2.0) GroupId
from Parcel (nolock)
where
ship_date = cast(getdate() as date)
這裏包裹P1,P2,P7從東線具有相同的GroupId。 但是我想在基於Route ie的Parcels上使用唯一的標識符,而不是隻有1/2/3 ..如果我能得到N1,N2,N3(對於北航)和E1,E2(對於East航線),它將對我在包裏放置包裹。
所以我想結果集應該是這樣的:
Route | ParcelId | GroupId |
-------|----------|---------
NORTH | P1 | N1 |
NORTH | P2 | N1 |
NORTH | P3 | N2 |
NORTH | P4 | N2 |
NORTH | P5 | N3 |
EAST | P6 | E1 |
EAST | P7 | E1 |
EAST | P8 | E2 |
CENTRAL| P9 | C1 |
CENTRAL| P10 | C1 |
CENTRAL| P11 | C2 |
CENTRAL| P11 | C2 |
-------|----------|---------|
如果不完全N1/E1/C1 ..標識符應該是唯一的(基於路徑),我需要更新包裹表中的一些空白領域,所以會需要更新腳本。
任何鉛將不勝感激。
感謝,
感謝Sagar Gangwal進行編輯。 –