如果部门的值少一点的话,可以选择用表的外连接使用一条sql实现,不过现在看来必须使用多步才能实现

解决方案 »

  1.   

    select 产品名称,Sum(Case When 部门名称='部门1' then 数量 end)'部门1',Sum(Case when 部门名称='部门2' then 数量 end) '部门2' From Table1 Group by 日期,产品名称
    union
    select count(*)'产品名称',Sum(a.部门1)'部门1',Sum(a.部门2) '部门2' 
    From (select 产品名称,Sum(Case When 部门名称='部门1' then 数量 end)'部门1',Sum(Case when 部门名称='部门2' then 数量 end) '部门2' From Table1 Group by 日期,产品名称) a 
      

  2.   

    用一个交叉表查询
    再UNION
    一个GROUP查询
      

  3.   

    shuixin13(犬犬(心帆)) :
    我不是很明白,可以把源代码写出来么?谢谢!
      

  4.   

    如果部门少点就可以用下面sql:select '合计' as 产品名称,sum(a.数量)+sum(b.数量)+sum(c.数量) as 合计,sum(a.数量) as 部门1,sum(b.数量) as 部门2,sum(c.数量) as 部门3 from 原始表 a,原始表 b,原始表 c where a.产品名称=b.产品名称 and a.产品名称=c.产品名称 and a.部门名称='部门1' and b.部门名称='部门2' and c.部门名称='部门3'
    union
    select a.产品名称 as 产品名称,sum(a.数量)+sum(b.数量)+sum(c.数量) as 合计,sum(a.数量) as 部门1,sum(b.数量) as 部门2,sum(c.数量) as 部门3 
    from 原始表 a,原始表 b,原始表 c group by a.产品名称 where a.产品名称=b.产品名称 and a.产品名称=c.产品名称 and a.部门名称='部门1' and b.部门名称='部门2' and c.部门名称='部门3' order by 产品名称
      

  5.   

    sorry,错了点东东,应该是
    如果部门少点就可以用下面sql:select '合计' as 产品名称,sum(a.数量)+sum(b.数量)+sum(c.数量) as 合计,sum(a.数量) as 部门1,sum(b.数量) as 部门2,sum(c.数量) as 部门3 from 原始表 a,原始表 b,原始表 c where a.产品名称=b.产品名称 and a.产品名称=c.产品名称 and a.部门名称='部门1' and b.部门名称='部门2' and c.部门名称='部门3'
    union
    select a.产品名称 as 产品名称,sum(a.数量)+sum(b.数量)+sum(c.数量) as 合计,sum(a.数量) as 部门1,sum(b.数量) as 部门2,sum(c.数量) as 部门3 
    from 原始表 a,原始表 b,原始表 c where a.产品名称=b.产品名称 and a.产品名称=c.产品名称 and a.部门名称='部门1' and b.部门名称='部门2' and c.部门名称='部门3' group by a.产品名称 order by 产品名称
      

  6.   

    Sum(Case When 部门名称='部门1' then 数量 end)'部门1'
    含这个语句执行的时候出现错误信息:‘不支持此接口’。
    我用的是access数据库,该怎样解决?
      

  7.   

    access,刚才有人说access不支持这种语法,那怎么办啊?怎样解决?