私は宅配便の問題を1つ解決しています。それらは異なる経路を持ち、各経路はn個の小包を持つことができます。彼らは1つの袋に2小包を配置しています。クエリの下に使用して別の列の値でグループを使用して列の値を更新
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 |
-------|----------|---------|
:私のようなデータを得ることができた
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は、北ルートとP6から、P7は東ルートから同じグループIDを持っています。 しかし、N1、N2、N3(北ルートの場合)、E1、E2(東ルートの場合)を得ることができれば、わずか1/2/3の代わりにRouteに基づいて小包のユニークな識別子が必要です。小包を小包の中に並べる間に
だから私は、結果セットがのようになりますしたい:正確にN1/E1/C1ない場合
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 |
-------|----------|---------|
..識別子は(ルートに基づいて)ユニークである必要があり、私は小包のテーブルの上にいくつかの空のフィールドを更新する必要があります、同じもののための更新スクリプトが必要になります。
いずれのリードも高く評価されます。
おかげで、
編集のためにSagar Gangwalさんに感謝します。 –