sql 每一条记录按步长增加到某一个数,分别写到一个新表 【在线等,速结帐】
如题:
有一个表A
A01[编号] A02[名称] A03[起始长]
--------------------------------------
10001 测试1 500
10002 测试2 600
10003 测试3 800
...
现在想把表A的数据按A03现在的长度每次增加50一直到1000为止放到一个表B里:
欲得到如下表B:
B01[编号] B02[名称] B03[长度]
------------------------------------------------
10001-500 测试1-500 500
10001-550 测试1-550 550
10001-600 测试1-600 600
...
10001-1000 测试1-1000 1000
10002-600 测试2-600 600
...
10002-1000 测试2-1000 1000
10003-800 测试3-800 800
...
10003-1000 测试3-1000 1000
依次类推,一直到长度满1000为止.不就一个存储过程或sql语句。
------解决方案--------------------这个不难 写个存储过程 添加个while循环 每次取A表一条数据 直至取完,在循环中 设一个变量X赋初始值为该数据的长度,再添加个while循环增加X的值,并插入B表,直至while大于等于1000
------解决方案----------------------创建测试数据
Create TABLE #TB (A01 int,A02 varchar(50),A03 varchar(50))
INSERT INTO #TB select '10001', '测试1', '500'
union all select '10002', '测试2', '600'
union all select '10003', '测试3', '800'
--解决方案
select a.A01 as B01,A02 +'-'+cast(A03 + b.number * 50 as varchar(10)) AS B02,cast(A03 + b.number * 50 as varchar(10)) B03
from #TB a,master..spt_values b
where b.type='p' and b.number <= (1000-A03)/50
--
/*
B01 B02 B03
----------- ------------------------- ----------
10001 测试1-500 &nbs