CREATE TABLE [dbo].[原料入库表] (
[材料号] [char] (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[入库时间] [datetime] NOT NULL ,
[入库数量] [int] NOT NULL ,
[仓库号] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[入库号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL //primary key
) ON [PRIMARY]
GOCREATE TABLE [dbo].[原料出库表] (
[材料号] [char] (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[出库时间] [datetime] NULL ,
[出库数量] [int] NOT NULL ,
[仓库号] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[出库号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL //primary key
) ON [PRIMARY]
GO材料号 时间 入库数量 入库仓库号 出库数量 出库仓库号
因为同一天内可能出入库好几次,就要按时间把入库数量,出库数量 加起来
也可能存在某天内只入库或者出库,那么这个材料号在数据库内就不存在当天的出库记录。

解决方案 »

  1.   


       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
      

  2.   

    要的到这样的:材料号    时间         入库数量   入库仓库号   出库数量   出库仓库号
    01       2010-1-24        30          a            10       b
    02       2010-1-24        null        null         10       c
      

  3.   

    create table 原料入库表(
      材料号 char(6) not null
     入库时间 datetime NOT NULL ,
     入库数量 int NOT NULL ,
     仓库号 varchar(10) not null,
     入库号 char (10)  NOT NULL,
     constraint pk_库存表 primary key(入库号) 
    ) create table 原料出库表(
     材料号 char(6) not null
     出库时间 datetime NOT NULL ,
     出库数量 int NOT NULL ,
     仓库号 varchar(10) not null,
     出库号 char (10)  NOT NULL,
     constraint pk_库存表 primary key(出库号 ) 
    ) 要得到类似这样的表格:
    材料号    时间        入库数量   出库数量  
    01      2010-1-24        30          10      
    02      2010-1-24        0           10      
    03      2010-1-24        20          0
    01      2010-1-25        0           10      
    02      2010-1-25        0           10      
    03      2010-1-25        20          0因为同一天内会有多次的出入库,或者只有出库或者入库.而且也可能从不同的仓库操作.
      

  4.   


    select coalesce(t1.材料号,t2.材料号) 材料号, coalesce(t1.时间,t2.时间) 时间,
    isnull(t1.入库数量,0) 入库数量, isnull(t2.出库数量,0) 出库数量
    from 
    (select 材料号,时间,sum(入库数量) 入库数量 from 原料入库表 group by 材料号,时间) t1 
    full outer join 
    (select 材料号,时间,sum(出库数量) 出库数量 from 原料入库表  group by 材料号,时间) t2
    on t1. 材料号=t2.材料号 and t1.时间=t2.时间
      

  5.   


    create table 原料入库表( 
      材料号 char(6) not null ,
    入库时间 datetime NOT NULL , 
    入库数量 int NOT NULL , 
    仓库号 varchar(10) not null, 
    入库号 char (10)  NOT NULL, 
    primary key(入库号) 
    ) create table 原料出库表( 
    材料号 char(6) not null ,
    出库时间 datetime NOT NULL , 
    出库数量 int NOT NULL , 
    仓库号 varchar(10) not null, 
    出库号 char (10)  NOT NULL, 
    primary key(出库号 ) 

    insert into 原料入库表 values('111',getdate(),100,'A01','B01')
    insert into 原料入库表 values('111',getdate(),200,'A02','B02')
    insert into 原料入库表 values('112',getdate(),100,'A01','B05')
    insert into 原料入库表 values('113',getdate(),100,'A01','B06')
    insert into 原料入库表 values('111',dateadd(dd,1,getdate()),50,'A01','B03')
    insert into 原料入库表 values('113',dateadd(dd,1,getdate()),350,'A01','B04')
    insert into 原料出库表 values('111',getdate(),50,'A01','C01')
    insert into 原料出库表 values('111',getdate(),150,'A02','C02')
    insert into 原料出库表 values('115',getdate(),100,'A01','C05')
    insert into 原料出库表 values('113',getdate(),100,'A01','C06')
    insert into 原料出库表 values('111',dateadd(dd,-1,getdate()),50,'A01','C03')
    insert into 原料出库表 values('117',dateadd(dd,-1,getdate()),350,'A01','C04')
    select 材料号,时间,入库数量 = sum(入库数量),出库数量 = sum(出库数量)
    from
    (
    select '材料号' = case when isnull(原料入库表.材料号,'') = '' then 原料出库表.材料号 else 原料入库表.材料号 end,
           '时间' = case when isnull(原料入库表.入库时间,'') = '' then convert(char(10),原料出库表.出库时间,120) 
                             else convert(char(10),原料入库表.入库时间,120) end,
           '入库数量' = isnull(入库数量,0),
           '出库数量' = isnull(出库数量,0)
    from 原料入库表 full outer join 原料出库表
    on 原料入库表.材料号 = 原料出库表.材料号
       and convert(char(10),入库时间,120) = convert(char(10),出库时间,120)
       and 原料入库表.仓库号 = 原料出库表.仓库号
    ) a
    group by 材料号,时间
    order by 材料号,时间