Pra*_*ady 0 sql sql-server sql-server-2008
我有一张结构的桌子
TableA
ID price1 price2 price3 price4 rate1 rate2 rate3 rate4
1 10 11 12 13 2 3 2 2
Run Code Online (Sandbox Code Playgroud)
我想插入另一个tableB
ID Price Rate
1 10 2
1 11 3
Run Code Online (Sandbox Code Playgroud)
现在,在我的光标中,我将TableA中的所有值提取到变量中
Fetch next from cursor1 into @id,@price1,@price2,@price3,@price4,@rate1,@rate2,@rate3,@rate4
Run Code Online (Sandbox Code Playgroud)
获取后我想插入TableB
我想循环遍历TableA的列,所以insert语句是
insert into tableB (Id,Price,Rate) values (@id,@price1,@rate1)
Run Code Online (Sandbox Code Playgroud)
但我必须给4插入语句来获取值
有没有办法可以循环,所以我可以在循环中有一个单一的插入语句
在这个例子中,我只给了4列,但我有30列,所以我需要进入循环
谢谢
Prady
你不需要游标,它可以直接从查询中完成 -
INSERT INTO TableB (id, price, rate)
select id, price1, rate1 from TableA
UNION ALL
select id, price2, rate2 from TableA
UNION ALL
select id, price3, rate3 from TableA
..
..
Run Code Online (Sandbox Code Playgroud)
尽可能避免使用游标,但它们总是会对性能产生影响.