質問、挿入を 9 回だけ実行するにはどうすればよいですか? @CN_COUNT の値なので、9 と言います。代わりに、これは 9*9 を実行しています。どんな助けでも本当に感謝します。
DECLARE @CN_COUNT INT
, @DATE VARCHAR(10) = CONVERT(VARCHAR(10), GETDATE(),101)
, @TIME VARCHAR(10) = CONVERT(VARCHAR(8), GETDATE(),114)
SELECT @CN_COUNT = COUNT(*) FROM CARTON_HEADER
DECLARE @CN INT
SET @CN = 1
WHILE (@CN <= @CN_COUNT)
BEGIN
SET @CN = @CN + 1
INSERT INTO TM_CARTON(
CN_NUMBER, CN_PICKTICKET, CN_LOAD_NUMBER, CN_SHIPMENT_NUMBER, CN_PACKED_QTY, CN_TRACKING_NUMBER,
CN_ROUTE, CN_BOL, CN_MBOL, CN_PARCEL_NUMBER, CN_TRAILER_NUMBER, CN_CREATED_DATE, CN_CREATED_TIME)
SELECT
CN_NUMBER, CN_PICKTICKET, CN_LOAD_NUMBER, CN_SHIPMENT_NUMBER, CN_PACKED_QTY, CN_TRACKING_NUMBER,
CN_ROUTE, CN_BOL, CN_MBOL, CN_PARCEL_NUMBER, CN_TRAILER_NUMBER, @DATE, @TIME
FROM CARTON_HEADER WHERE CN_LOAD_NUMBER = '1000000002'
END
GO
サンプルデータは次のとおりです。
CN_NUMBER CN_STATUS CN_LOAD_NUMBER
1001333311111 85 1000000002
1001333311112 85 1000000002
1001333311114 85 1000000002
1001333311113 85 1000000002
1001333311115 85 1000000002
1001333311116 85 1000000002
1001333311117 85 1000000002
1001333311118 85 1000000002
1001333311119 85 1000000002
上記のデータはテーブル A にあります。これをテーブル B にコピーしたいと思います。ここで、CN_LOAD_NUMBER はステートメントで宣言するものです
申し訳ありませんが、解決策はループなしの単純な INSERT ステートメントよりも複雑になりました。
INSERT INTO TM_CARTON(
CN_NUMBER, CN_PICKTICKET, CN_LOAD_NUMBER, CN_SHIPMENT_NUMBER, CN_PACKED_QTY, CN_TRACKING_NUMBER,
CN_ROUTE, CN_BOL, CN_MBOL, CN_PARCEL_NUMBER, CN_TRAILER_NUMBER, CN_CREATED_DATE, CN_CREATED_TIME)
SELECT
CN_NUMBER, CN_PICKTICKET, CN_LOAD_NUMBER, CN_SHIPMENT_NUMBER, CN_PACKED_QTY, CN_TRACKING_NUMBER,
CN_ROUTE, CN_BOL, CN_MBOL, CN_PARCEL_NUMBER, CN_TRAILER_NUMBER, @DATE, @TIME
FROM CARTON_HEADER WHERE CN_LOAD_NUMBER = '1000000002'