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

处女帖:请问如何把一张表按每一条记录水平拆分为N张只有一条记录的表?
请问如何把一张表按每一条记录水平拆分为N张只有一条记录的表? 网上搜索了很久也没找到类似情况...

原有表A:
----------------------------------
id     产品                订购数量    
   1     AA                  3           
   2     BB                  2          
   3     CC                  2        
   4     DD                  1       


====================================
拆分为A1-AN个表,每个表只有一条记录:

-------------------------
表A1:
----------------------------------
id     产品                订购数量    
   1     AA                  3           

表A2:
----------------------------------
id     产品                订购数量    
  2     BB                  2        

------解决方案--------------------

--动态将一张表数据拆成一条数据是一张表
if object_id('A') is not null
drop table A
GO
CREATE TABLE A
(
ID INT PRIMARY KEY,
产品 nvarchar(10),
订购数量 int
)
go
insert into a
select 1,'AA',3 UNION ALL
select 2,'BB',2 UNION ALL
select 3,'CC',2 UNION ALL
select 4,'DD',1
go
declare @count int,@i int
select @count = count(*) from a
set @i=1

select @count

while (@i <= @count)
begin

declare @name nvarchar(10),@sql nvarchar(100),@sql1 nvarchar(100)
set @name = 'b'+convert(nvarchar(10),@i)

--动态创建表
set @sql = N'select * into '+@name+' from a where 1<>1' --复制表结构
--print @sql
exec sp_executesql @sql
--插人数据
set @sql1 = N'insert into ' + @name + ' select * from a where id =