コード値のリストを並べ替え:T-SQLテーブルに
CREATE TABLE #Temp (T_ID INT IDENTITY(1,1), T_Desc NVARCHAR(10), PriorityOrder INT)
INSERT INTO #Temp
SELECT 'Apple',1
UNION
SELECT 'LG',2
UNION
SELECT 'Microsoft',3
UNION
SELECT 'Samsung',4
UNION
SELECT 'Sony',5
SELECT * FROM #Temp
DROP TABLE #Temp
を出力:
T_ID T_Desc PriorityOrder
1 Apple 1
2 LG 2
3 Microsoft 3
4 Samsung 4
5 Sony 5
目標: T_Desc値(すなわち、パラメータ#1)があった場合にPriortyOrderを再配置します1つまたは複数の行を上下にシフトします。 LGは5(すなわち、パラメータ#2)にPriortyOrder 2からずれた場合 すなわち、新しい出力は、言い換えれば、同じよう
T_ID T_Desc PriorityOrder
1 Apple 1
2 LG 5
3 Microsoft 2
4 Samsung 3
5 Sony 4
を見てしまう、LG以下のすべてが「Priortyorder」フィールドにシフトアップ。また、ソニーがPriorityOrder 5から1に移行した場合(順番に動く)には、これはうまくいくはずです。
T_ID T_Desc PriorityOrder
1 Apple 2
2 LG 3
3 Microsoft 4
4 Samsung 5
5 Sony 1
Iは、アップ/ダウン移動/シフト/リシーケンシングオーダー1行の例を見てきましたが、複数の行を超えるシフト把握することができていません。
更新:リストのデータ量は異なります。あなたが移動する行のT_IDを提供する必要が
T_Desc列の順序は保持されるべきですか? –
PriorityOrderにギャップや重複がないことが保証されていますか? –
「OriginalPriortyOrder」または「PrevPriortyOrder」列が必要で、それを並べ替えるだけのようです。 – JBrooks