当前位置: 代码迷 >> Sql Server >> 怎么根据结果集里边的数量动态插入不同数目的数据
  详细解决方案

怎么根据结果集里边的数量动态插入不同数目的数据

热度:5   发布时间:2016-04-24 09:56:39.0
如何根据结果集里边的数量动态插入不同数目的数据
现有表结构T1
编号  数量
1001   2
1002   1
1003   4
1004   5

新表T2,根据T1表的数量,把编号放入T2表,T2表只有一个标号字段,数据如下
编号
1001
1001
1002
1003
1003
1003
1003
1004
1004
1004
1004
1004
因为数据量比较大,希望能用速度比较快的方式实现,谢谢大家
------解决思路----------------------
试试这个:


insert into T2
select 编号
from   T1 t,master..spt_values s  
where s.type = 'P' and s.number >=1 and s.number <= 数量

------解决思路----------------------
引用:
Quote: 引用:

不好意思,手误,再试一下下面的sql。

with cte as 
(
select 编号,数量-1 as 数量 from T1 where 数量>0
union all
select 编号,数量-1 as 数量 from cte where 数量>0
)
insert T2(编号) select 编号 from cte order by 编号
select * from T2

你好,这个对数据量大的不太适用吧
报错 
消息 530,级别 16,状态 1,第 1 行
语句被终止。完成执行语句前已用完最大递归 100。

试一下下面的sql

with cte as 
(
select 编号,数量-1 as 数量 from T1 where 数量>0
union all
select 编号,数量-1 as 数量 from cte where 数量>0
)
insert T2(编号) select 编号 from cte order by 编号 OPTION(MAXRECURSION 0)
select * from T2
  相关解决方案