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
  • 相关阅读:
    sqlserver 批量删除所有表语句
    C# 中的委托和事件
    Oracle建立用户
    C# Linq获取两个List或数组的差集交集
    Linux下Redis安装与配置操作说明
    word缩印
    centos7上的postgresql10安装和配置
    numpy技巧
    发票二维码扫描增强_06_持续优化
    发票二维码扫描增强_05_构建目标二维码
  • 原文地址:https://www.cnblogs.com/Snowfun/p/4613305.html
Copyright © 2011-2022 走看看