私は2つのテーブルを持っています - 1つは#finalと呼ばれ、多くの顧客データ(すべての情報の複合)を持っています。これダースの列または - Iは、第2のテーブルループ内のMS SQLループ
create table #diff_temp
(
customer_no int,
num_reception int,
num_guests int,
diff int
)
第二テーブルは、顧客ID、総受信し、ゲストのチケットとdiff = reception-guests
間の差が移入されている方法を持っているfirst_name, middle_name, last_name, address, attendees
など何私はループを実行して名前を挿入する必要がありますが、#finalにはレコードごとのdiffと等しい時間が入ります。
たとえば、
#diff_Temp
のようなデータがあります。私が起こるに必要なもの
customer_no num_reception num_guests diff
1 5 1 4
2 12 10 2
3 3 1 2
4 32 20 12
5 12 10 2
6 8 6 2
は、ループが4回を実行し、データを#final
に4回入力された顧客1のためのループが存在することです。顧客2の場合、ループは2回実行され、顧客4は12回実行されます。
各顧客について、ループはdiff列の値の量の時間を実行します。その後、ループは大規模なSQLクエリに基づいて#finalにデータを挿入します。
ここでカーソルやループを作成する方法を理解できないようです。
これは私が持っているスクリプトです。実行されますが、何もしません。 私は内部カーソルのみを実行すると、行(6)の量を取り、各行に6回入力します。私が望むものではありません。
新しく更新されたスクリプト:このコードは
(6 row(s) affected)
iteration 1
diff 4
customer 1
(6 row(s) affected)
iteration 2
diff 4
customer 1
(6 row(s) affected)
iteration 3
diff 4
customer 1
(6 row(s) affected)
iteration 4
diff 4
customer 1
(6 row(s) affected)
iteration 1
diff 2
customer 2
(6 row(s) affected)
iteration 2
diff 2
customer 2
以下の各反復/ループが6行を挿入されて生成される
DECLARE @Iteration INT = 1 -- Loop
DECLARE @diff INT = 1 -- Cursor
DECLARE @owner_customer_no INT -- Cursor
BEGIN
DECLARE loop_cursor CURSOR FOR
SELECT owner_customer_no, diff
FROM #diff_temp
OPEN loop_cursor
FETCH NEXT FROM loop_cursor INTO @owner_customer_no, @diff
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Iteration = 1
WHILE @Iteration <= @diff
BEGIN
insert into #final
select distinct
e.customer_no,
0 as guest_cust_no,
h.fname,
...
where e.campaign_no = 1119
and sc.coding_scenario = 2
PRINT @Iteration
PRINT @diff
PRINT @owner_customer_no
SET @Iteration = @Iteration + 1
END
FETCH NEXT FROM loop_cursor INTO @owner_customer_no, @diff
END
CLOSE loop_cursor
DEALLOCATE loop_cursor
END
- 私はそれが何をしたいかは、1行を挿入しています。
なぜあなたはそれを理解できないと思いますか?どのようなコードを試しましたか、どのようなエラーがありましたか? –
@TabAlleman - 私は試してみましたが、私は立ち往生しています。私は質問にコードを追加しました。 – Elizabeth
投稿されているものから、ここでループする必要はありません。これは、ループを回避できるデータを挿入するだけです。 –