请问如何把一张表按每一条记录水平拆分为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        

解决方案 »

  1.   

    分成N张表后,你是如何返回给用户呢?这样第一张表就是一个记录集,.net里面有DataSet可以返回多个记录集,可以使用游标循环,每一次select一条记录作为一张表,在.net里用DataSet接收数据集
      

  2.   


    能把分N张表的SQL语句简单写一写吗?不懂怎么用游标...
      

  3.   


    --动态将一张表数据拆成一条数据是一张表
    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=1select @countwhile (@i <= @count)
    begindeclare @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 @sqlset @i=@i+1
    end
      

  4.   

    继续请教:如果没有ID列,上面代码该怎么改?======================
    产品                订购数量    
     AA                  3           
     BB                  2          
     DD                 2        
     DD                  1