zoukankan      html  css  js  c++  java
  • 将数据以某个单位进行拆分

    将数据以2000为单位对表数据进行拆分

    创建表和插入数据

    CREATE TABLE [dbo].[testtb](
        [id] [int] IDENTITY(1,1NOT NULL,
        [Sonum] [varchar](10NULL,
        [ItemNum] [varchar](30NULL,
        [ItemQty] [int] NULL,
        [SoArea] [varchar](30NULL
    ON [PRIMARY]

    GO

    SET ANSI_PADDING OFF
    GO

    ALTER TABLE [dbo].[testtb] ADD  CONSTRAINT [DF_testtb_Sonum]  DEFAULT (''FOR [Sonum]
    GO

    ALTER TABLE [dbo].[testtb] ADD  CONSTRAINT [DF_testtb_ItemNum]  DEFAULT (''FOR [ItemNum]
    GO

    ALTER TABLE [dbo].[testtb] ADD  CONSTRAINT [DF_testtb_ItemQty]  DEFAULT ((0)) FOR [ItemQty]
    GO

    ALTER TABLE [dbo].[testtb] ADD  CONSTRAINT [DF_testtb_SoArea]  DEFAULT (''FOR [SoArea]
    GO



    CREATE TABLE [dbo].[testtb2](
        [id] [int] NULL,
        [Sonum] [varchar](10NULL,
        [ItemNum] [varchar](30NULL,
        [ItemQty] [int] NULL,
        [SoArea] [varchar](30NULL
    ON [PRIMARY]

    GO

    SET ANSI_PADDING OFF
    GO

    ALTER TABLE [dbo].[testtb2] ADD  CONSTRAINT [DF_testtb2_id]  DEFAULT ((0)) FOR [id]
    GO

    ALTER TABLE [dbo].[testtb2] ADD  CONSTRAINT [DF_testtb2_Sonum]  DEFAULT (''FOR [Sonum]
    GO

    ALTER TABLE [dbo].[testtb2] ADD  CONSTRAINT [DF_testtb2_ItemNum]  DEFAULT (''FOR [ItemNum]
    GO

    ALTER TABLE [dbo].[testtb2] ADD  CONSTRAINT [DF_testtb2_ItemQty]  DEFAULT ((0)) FOR [ItemQty]
    GO

    ALTER TABLE [dbo].[testtb2] ADD  CONSTRAINT [DF_testtb2_SoArea]  DEFAULT (''FOR [SoArea]
    GO



     truncate table testtb
     truncate table testtb2

    insert into testtb(Sonum,ItemNum,ItemQty,SoArea) values('SO1','Item1001','2000','')
    insert into testtb(Sonum,ItemNum,ItemQty,SoArea) values('SO1','Item1002','600','')
    insert into testtb(Sonum,ItemNum,ItemQty,SoArea) values('SO2','Item1003','3500','')
    insert into testtb(Sonum,ItemNum,ItemQty,SoArea) values('SO2','Item1004','1400','')
    insert into testtb(Sonum,ItemNum,ItemQty,SoArea) values('SO2','Item1005','1000','')
    insert into testtb(Sonum,ItemNum,ItemQty,SoArea) values('SO3','Item1006','4099','')
    select * from testtb
    select * from testtb2
    View Code

    执行语句

     insert into  testtb2  select * from testtb  --先备份testtb的数据
     
    while exists(select * from testtb where ItemQty>2000)--1346
     begin
         declare  @tb01 table(ID int);
         insert into  @tb01(ID) select ID from testtb where ItemQty>2000;
         select * from @tb01  ------1346
         insert into testtb    (    Sonum,ItemNum,ItemQty,SoArea)
            select Sonum,ItemNum,2000,SoArea from testtb   where ID in (select ID from @tb01); ---将大于1000的数量再插入到表里面

         update testtb set ItemQty=(ItemQty-2000where ID in (select ID from @tb01); ---对大于1000的物料数量自动减1000
         delete from  @tb01;
     end
     
     
    select * from testtb order by sonum,ItemNum
    select * from testtb2 
    View Code
  • 相关阅读:
    Python中使用pip安装库时提示:远程主机强迫关闭了一个现有的连接
    一个真正有能力的人
    一个程序员的自白(延迟满足)
    小规模团队如何“微服务”管理
    一个程序员的自白(无知之者)
    小型系统如何“微服务”开发
    TCP协议学习总结(下)
    TCP协议学习总结(中)
    TCP协议学习总结(上)
    一个程序员的自白(三十而立)
  • 原文地址:https://www.cnblogs.com/Snowfun/p/4613305.html
Copyright © 2011-2022 走看看