当前位置: 代码迷 >> Sql Server >> 【,速结贴】SQL 怎样在原表将一条数据根据数量字段拆分成同等数量一条一条的数据
  详细解决方案

【,速结贴】SQL 怎样在原表将一条数据根据数量字段拆分成同等数量一条一条的数据

热度:56   发布时间:2016-04-24 10:33:26.0
【在线等,速结贴】SQL 怎样在原表将一条数据根据数量字段拆分成同等数量一条一条的数据
如题,比如我现在有一个表A,
A01(流水号)      A02(编号)     A03(数量)  A04(条码)
--------------------------------------------------------------------------------
1                               a001                  3                      14001
。。。

想要得到如下结果:原记录不删除,然后生成三条记录,编号不变,数量全部是1,只有条码是按规律自动增:
A01(流水号)      A02(编号)     A03(数量)  A04(条码)
--------------------------------------------------------------------------------
1                               a001                  1                      14001
2                               a001                  1                      14002
3                               a001                  1                      14003
。。。



------解决方案--------------------
----------------------------------------------------------------
-- Author  :DBA_HuangZJ(发粪涂墙)
-- Date    :2014-06-17 10:46:42
-- Version:
--      Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 
-- Apr  2 2010 15:48:46 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据[A]
if object_id('[A]') is not null drop table [A]
go 
create table [A]([A01] int,[A02] nvarchar(8),[A03] int,[A04] int)
insert [A]
select 1,'a001',3,14001
--------------生成数据--------------------------

    
select ROW_NUMBER()OVER(ORDER BY GETDATE())[A01],A02,1 A03,A04 
from [A] CROSS JOIN (SELECT  number
FROM    master..spt_values
WHERE   number >= 1
        AND number <= ( SELECT  [A03]
                        FROM    a
                      )
        AND [type] = 'P')b
----------------结果----------------------------
/* 
A01                  A02      A03         A04
-------------------- -------- ----------- -----------
1                    a001     1           14001
2                    a001     1           14001
3                    a001     1           14001
*/

------解决方案--------------------
----------------------------------------------------------------
-- Author  :DBA_HuangZJ(发粪涂墙)
-- Date    :2014-06-17 10:46:42
-- Version:
--      Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 
-- Apr  2 2010 15:48:46 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------------------------------------------
  相关解决方案