有一个三个表,结构如下
goodlist(商品目录表)
goodid 类别 编码 名称 规格out(销售表)
outid goodid deparid 数量 单价 金额 成本 日期depar(部门列表)
deparid name现想得到一个某段日期的汇总表
要求按部门和商品类别去汇总销售表中的金额和成本

解决方案 »

  1.   

    select
    b.name as 部门,
    c.类别,
    sum(金额) as 金额,
    sum(成本) as 成本
    from 
    [out] a
    join
    depar b on a.deparid=b.deparid
    join
    goodlist c on c.goodid=a.goodid
    where
    日期 between '开始日期' and '结束日期'group by  b.name as 部门, c.类别
      

  2.   

    select
    b.name as 部门,
    c.类别,
    sum(金额) as 金额,
    sum(成本) as 成本
    from 
    [out] a
    join
    depar b on a.deparid=b.deparid
    join
    goodlist c on c.goodid=a.goodid
    where
    日期 between '开始日期' and '结束日期'group by  b.name , c.类别
      

  3.   

    select d.name as 部门,
    g.类别 as 商品类别,
    sum(o.金额) as 金额,
    sum(o.成本) as 成本
    from goodlist g,depar d,[out] o
    where o.goodid=g.goodid
    and o.deparid=d.deparid
    and o.日期  between 起始日期 and 终止日期
    group by d.name,g.类别
      

  4.   

    select c.name,b.类别,sum(金额)as '金额',sum(成本)as '成本'
    from out a left join goodlist b on a.goodid=b.goodid
    left join depar c on a.deparid =c.deparid 
    where a.日期 between '2008-01-01' and '2008-02-01'
    手写,可能错!
      

  5.   

    select c.name,b.类别,sum(金额)as '金额',sum(成本)as '成本'
    from out a left join goodlist b on a.goodid=b.goodid
    left join depar c on a.deparid =c.deparid 
    group by c.name,b.类别
    where a.日期 between '2008-01-01' and '2008-02-01'忘了group 
      

  6.   

    诶,反了
    select c.name,b.类别,sum(金额)as '金额',sum(成本)as '成本'
    from out a left join goodlist b on a.goodid=b.goodid
    left join depar c on a.deparid =c.deparid 
    where a.日期 between '2008-01-01' and '2008-02-01'
    group by c.name,b.类别
      

  7.   


    select departid, name 部門, goodid,类别,编码,名称,规格,sum(金额) 金额,sum(成本) 成本
    from out left join depart on out.departid=depart.departid
    left join goodlist on out.goodid=goodlist.goodid
    where 日期 between '2008-01-01' between '2008-01-17'
    group by departid,goodidselect temp.goodid,类别,编码,名称,规格,temp.departid,name 
    from 
    (select goodid,deparid,sum(金额) 金额,sum(成本) 成本 
     from out 
     where 日期 between '2008-01-01' between '2008-01-17'
    group by departid,goodid) temp
    left join goodlist on temp.goodid=goodlist.goodid
    left join depar on temp.departid=depar.departid
    order by departid,类别兩個隨便挑一個吧
      

  8.   

    if object_id('goodlist') is not null 
       drop table goodlist
    if object_id('out') is not null 
       drop table out
    if object_id('depar') is not null 
       drop table depar
    go
    create table goodlist(goodid int,类别 varchar(10),编码 varchar(10),名称 varchar(10),规格 varchar(10))
    insert goodlist 
    select 1,'类别1','编码1','资源名称1','规格1' union all
    select 2,'类别2','编码2','资源名称2','规格2' union all
    select 3,'类别2','编码3','资源名称3','规格3' union all
    select 4,'类别3','编码4','资源名称4','规格4' union all
    select 5,'类别1','编码5','资源名称5','规格5'create table out(outid int,goodid int,deparid int,数量 int,单价 float,金额 float,成本 float,日期 datetime)
    insert out
    select 1,1,1,10,10.1,101,50,'2008-1-16' union all
    select 2,2,2,11,10.1,101,60,'2008-1-15' union all
    select 3,3,2,12,10.1,101,70,'2008-1-16' union all
    select 4,1,2,13,10.1,101,80,'2008-1-17' union all
    select 5,2,2,14,10.1,101,90,'2008-1-18' union all
    select 6,4,2,15,10.1,101,100,'2008-1-15' union all
    select 7,5,1,16,10.1,101,97,'2008-1-17' create table depar(deparid int,name_ch varchar(100))
    insert depar
    select 1,'部门1' union all
    select 2,'部门2'select isnull(cast(aa.deparid as varchar(10)),'总计'),isnull(aa.类别,'小计'),sum(aa.金额) as 金额和,sum(aa.成本)as 成本和 from
    (
    select b.类别,a.deparid,a.数量,a.单价,a.金额,a.成本,a.日期 from out a 
    inner join goodlist b on a.goodid=b.goodid
    where 日期 between '2008-1-15' and '2008-1-17'
    ) aa
    group by aa.deparid,aa.类别
    with rollup
    看看是你想要的吗
      

  9.   

    --按部门汇总
    select a.name , 金额 = sum(b.金额) , 成本 = sum(b.成本) from depar a , out b where a.deparid = b.deparid--按商品类别汇总
    select a.类别 , 金额 = sum(b.金额) , 成本 = sum(b.成本) from goodlist a , out b where a.goodid = b.goodid--按部门+商品类别汇总
    select t.* , 金额 = sum(c.金额) , 成本 = sum(c.成本) from
    (select a.name , b.类别 from depar , goodlist b) t, out c
    where t.deparid = c.deparid and t.goodid = c.goodid