select Cdepart,sum(C_A) as C_A,sum(B_A) as B_A,sum(C_B) as C_B,sum(B_B) as B_B,sum(C_C) as C_C,sum(C_A) as C_A
from 数据表
group by Cdepart
order by Cdepart

解决方案 »

  1.   

    非常感谢 itblog(i like i do) 
    这里我比较头疼的是,如果单位E 单位F 在数据库里没有怎么办,在结果集中也要列出!
    在线等待您的回复
      

  2.   

    非常感谢xeqtr1982(ShaKa) 您的参与
    数据库里没有单位信息表,但是单位数量是固定的 如:单位A-单位L
    在线等待您的回复
      

  3.   

    --我感觉加个单位表好做得多啊
    declare @t table(Cdepart varchar(10),C_A int,B_A int,C_B int,B_B int,C_C int,B_C int)
    insert into @t select '单位A'    ,1    ,2    ,3    ,4    ,5   ,6          
    union all select '单位A'    ,0    ,1    ,1    ,2    ,3    ,4
    union all select '单位B'    ,0    ,1    ,1    ,2    ,3    ,4
    union all select '单位B'    ,0    ,1    ,1    ,2    ,3    ,4
    union all select '单位C'    ,0    ,1    ,1    ,2    ,3    ,4
    union all select '单位D'    ,0    ,1    ,1    ,2    ,3    ,4
    union all select '单位E'    ,0    ,0    ,0    ,0    ,0    ,0declare @a table(Cdepart varchar(10))
    insert into @a select '单位A'
    union all select '单位B'
    union all select '单位C'
    union all select '单位D'
    union all select '单位E'
    union all select '单位F'
    union all select '单位G'
    union all select '单位H'
    union all select '单位I'
    union all select '单位J'
    union all select '单位K'
    union all select '单位L'select b.Cdepart,
           isnull(sum(C_A),0) as C_A,
           isnull(sum(B_A),0) as B_A,
           isnull(sum(C_B),0) as C_B,
           isnull(sum(B_B),0) as B_B,
           isnull(sum(C_C),0) as C_C,
           isnull(sum(C_A),0) as C_A
    from @t a,@a b
    where a.Cdepart=*b.Cdepart
    group by b.Cdepart
      

  4.   

    结果
    /*
    Cdepart    C_A         B_A         C_B         B_B         C_C         C_A         
    ---------- ----------- ----------- ----------- ----------- ----------- ----------- 
    单位A        1           3           4           6           8           1
    单位B        0           2           2           4           6           0
    单位C        0           1           1           2           3           0
    单位D        0           1           1           2           3           0
    单位E        0           0           0           0           0           0
    单位F        0           0           0           0           0           0
    单位G        0           0           0           0           0           0
    单位H        0           0           0           0           0           0
    单位I        0           0           0           0           0           0
    单位J        0           0           0           0           0           0
    单位K        0           0           0           0           0           0
    单位L        0           0           0           0           0           0(所影响的行数为 12 行)
    */
      

  5.   

    select Cdepart,sum(C_A) as C_A,sum(B_A) as B_A,sum(C_B) as C_B,sum(B_B) as B_B,sum(C_C) as C_C,sum(C_A) as C_A
    from 数据表
    group by Cdepart
    union 
    select '单位E',0,0,0,0,0,0
    union 
    select '单位F',0,0,0,0,0,0
      

  6.   

    非常感谢xeqtr1982(ShaKa) 
      

  7.   

    xeqtr1982(ShaKa)
    还有个问题请教您,group by 后的单位名称怎么是乱序的啊,怎么才能定义排序?就是让它按指定的排序方式排序啊?客户要求排序必须和报表格式一样。