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
  • 相关阅读:
    C#获取局域网MAC地址
    查看Linux是32位还是64位的方法
    JS判断不能为空实例代码
    SQL2005数据库行列转换
    mysql 导入导出数据库、数据表的方法
    linux kill 关闭进程命令
    设置CentOS控制台分辨率图文详解
    Windows 2003 IIS 不支持ASP问题的解决方法
    稳聘App设计图分享
    Sql 中存储过程详细案例
  • 原文地址:https://www.cnblogs.com/Snowfun/p/4613305.html
Copyright © 2011-2022 走看看