select 物料名称,仓库,
      sum(CASE 
         WHEN FTrantype = 1 or FTrantype = 2 or FTrantype = 3 THEN 数量
         ELSE 0
      END) as 本月购进数量,
      sum(CASE 
         WHEN FTrantype = 4 or FTrantype = 5 or FTrantype = 6 THEN 数量
         ELSE 0
      END) as  本月发出数量,
      日期
  from 表名
 group by 物料名称,仓库,日期
 order by 物料名称,仓库,日期

解决方案 »

  1.   

    试试用存储过程,比较烦但能解决问题
    select 物料名称,仓库,sum(数量) as 本月购进数量,sum(数量) as 本月发出数量,日期 into #temp1 where Ftrantype<4 Group BY 物料名称,仓库,日期update #temp Set 本月发出数量=0select 物料名称,仓库,sum(数量) as 本月发出数量,日期 into #temp2 where Ftrantype<4 Group BY 物料名称,仓库,日期Insert Into #temp1(物料名称,仓库,本月发出数量,日期) Select a.物料名称,a.仓库,a.本月发出数量,a.日期 From #temp2Select 物料名称,仓库,Sum(本月购进数量) as 本月购进数量,sum(本月发出数量) as 本月发出数量,日期 From #temp1 Group 物料名称,仓库,日期
      

  2.   

    CREATE TABLE aaa (ftrantype decimal(10, 0) NULL,出库 char (20),入库 char (20),
    日期 char (10),物料名称 char (50),数量 decimal(10, 0) NULL)insert into aaa 
    (FTrantype,出库,入库,日期,物料名称,数量)
    values
    ( 1,'','四分厂','2004-07-02','硅胶558#',10.0)
    insert into aaa 
    (FTrantype,出库,入库,日期,物料名称,数量)
    values
    ( 2,'','四分厂','2004-07-02','硅胶602#',20.0)
    insert into aaa 
    (FTrantype,出库,入库,日期,物料名称,数量)
    values
    ( 2,'','铁艺厂','2004-07-02','硅胶558#',10.0)
    insert into aaa 
    (FTrantype,出库,入库,日期,物料名称,数量)
    values
    ( 4,'四分厂','','2004-07-02','硅胶558#',10.0)insert into aaa 
    (FTrantype,出库,入库,日期,物料名称,数量)
    values
    ( 5,'铁艺厂','','2004-07-02','硅胶602#',10.0)------测试数据
    select 
     isnull(a.物料名称,b.物料名称) as 物料名称,
     isnull (a.仓库,b.仓库) as 仓库,
    isnull (a.数量,0) as 本月购进数量,
    isnull (b.数量,0) as 本月发出数量from
    (select 物料名称,ftrantype,出库 as 仓库,sum(数量) as 数量
    from aaa 
    where ftrantype in (1,2,3)
    group by 物料名称,ftrantype,出库) a
    full join (select 物料名称,ftrantype,入库 as 仓库,sum(数量) as 数量
    from aaa 
    where ftrantype in (4,5,6)
    group by 物料名称,ftrantype,入库) b
    on a.物料名称=b.物料名称 
      

  3.   

    select 
     isnull(a.物料名称,b.物料名称) as 物料名称,
     isnull (a.仓库,b.仓库) as 仓库,
    isnull (a.数量,0) as 本月购进数量,
    isnull (b.数量,0) as 本月发出数量from
    (select 物料名称,ftrantype,出库 as 仓库,sum(数量) as 数量
    from aaa 
    where ftrantype in (4,5,6)
    group by 物料名称,ftrantype,出库) a
    full join (select 物料名称,ftrantype,入库 as 仓库,sum(数量) as 数量
    from aaa 
    where ftrantype in (1,2,3)
    group by 物料名称,ftrantype,入库) b
    on a.物料名称=b.物料名称 and a.仓库=b.仓库