そのため、最初に問題全体を説明し、次に SQL コーディングのどこに問題があるかを説明します。
倉庫のピックリストである一連のデータがあります。基本的に、このデータを再編成して、各通路で一方向に従うようにしています。
たとえば、ここにピックリストがあります
三重停車場等 AISLE ビン
216 1PV 71
216 午後 2 時 64
216 3 PL 47
216 午後 4 時 36 分
216 5 PL 32
216 6 PL 88
216 7 PJ 49
216 8 PJ 29
216 9 PJ 20
216 10 PJ 19
216 11 ピ 22
216 12PI45
216 13 PN 33
216 14 PN 28
通路は一方通行なので、上り坂と下り坂があります。
この場合、通路の PJ が昇順 (ピック 7、8、9、10) になるようにこのテーブルを再編成したいので、ピックリストを調べて、通路の昇順または降順に基づいてピック シーケンスを並べ替えます。この例では 1 つの通路にのみ焦点を当てます。そのため、テーブルをループして、列 PJ を持つレコードを再編成し、逆の順序になるクエリを探しています。に似ている
216 7 PJ 19
216 8 PJ 20
216 9 PJ 29
216 10 PJ 49
しかし、私は今それらの行に影響を与えようとしているだけです。これまでのところ、CTE を内部に持つカーソルを作成しました。このようなもの。
declare inner_cursor cursor scroll
for select aisle from table_input
open inner_cursor
fetch next from inner_cursor into @aisle
while @@fetch_status = 0
begin
if @aisle in ('PJ')
begin
with C as
(select stopseq, 0 + row_number() over (order by bin desc) as newtripstop
from SIM_Input_reschedule
)
update C
set tripstopseq = newtripstop
end
しかし、それはリスト全体をビン番号で並べ替えるだけなので、追加して通路の制約を追加しようとしました
begin
with C as
(select tripstopseq, 0 + row_number() over (order by bin asc) as newtripstop, aisle
from SIM_Input_reschedule
where AISLE = @aisle
)
update C
set tripstopseq = newtripstop
end
しかし、それはテーブルの行に影響しませんでした。どんな助けでも大歓迎です。私は CTE でこれに対して完全に間違ったアプローチをとっていた可能性があるので、より良い方法があれば教えてください。