处女帖:请问如何把一张表按每一条记录水平拆分为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 = '+convert(nvarchar(10),@i)
--print @sql1
EXEC sp_executesql @sql1
--查询
EXEC ('SELECT * FROM ' + @name )
--动态删除表
--set @sql = N'drop table '+@name
----print @sql
--exec sp_executesql @sql
set @i=@i+1
end