日期:2014-05-17  浏览次数:20500 次

根据列值生成多行记录的新表,通过语句实现。
原表结构
A B C
AA BB 3
期望值
A B C
AA CC 1
AA DD 1
AA EE 1

期望:根据原表的C字段数据生成新表,其中新表行数为原表的C列值,B字段值为新赋值,求实现方式。

------解决方案--------------------
USE test
GO

-->生成表tb

if object_id('tb') is not null 
drop table tb
Go
Create table tb([A] nvarchar(2),[B] nvarchar(2),[C] smallint)
Insert into tb
Select N'AA',N'BB',3
UNION ALL Select N'aa',N'bb',4 -- test


select 
a.A
,REPLICATE(NCHAR(UNICODE(a.B)+b.number),LEN(a.B)) AS B
,1 AS C
from 
tb AS a
,master.dbo.spt_values AS b 

WHERE b.type='p'
AND b.number BETWEEN 1 AND a.C


/*
A    B    C
---- ---- ---
AA   CC   1
AA   DD   1
AA   EE   1
aa   cc   1
aa   dd   1
aa   ee   1
aa   ff   1
*/