表结构这样的  表名  chebu
ID       ID号    
btfy1     补贴费用1(money)
btfy2     补贴费用2(money)
bm       车辆所属部门(int)
clsx     车辆属性(int  0公车,1私车)
要得到的表为序号   部门    公车补贴1   公车补贴2   公车补贴合计   私车补贴1  私车补贴2  私车补贴合计  全部合计
如果只按部门统计部分公私车的话,直接group by bm 就出来了,但要按部门,同时要公私车就不会了,请大师们帮忙

解决方案 »

  1.   

    自己用 case when  then    else 0 end  搞定了,多谢
     
      

  2.   

    sum(case when .. then ..)
      

  3.   


    /*
    --本人求出的结果如下:
    序号  部门 公车补贴1 公车补贴2 公车补贴合计 私车补贴1 私车补贴2 私车补贴合计 全部合计
    cb1001 0 233.00   188.00 421.00 0.00 0.00   0.00   421.00
    cb1002 0 172.00   216.00 388.00 0.00 0.00   0.00   388.00
    cb1003 0 422.00   421.00 843.00 0.00 0.00   0.00   843.00
    cb1004 0 231.00   767.00 998.00 0.00 0.00   0.00   998.00
    cb1005 1 0.00   0.00     0.00 563.00 234.00   797.00   797.00
    cb1006 1 0.00   0.00     0.00 233.00 862.00   1095.00   1095.00
    */
      

  4.   

    我没用到sum(),就可以求出来了.
      

  5.   


    /*
    --按部门分组,序号就不能展示出来了,因为一个部门有着多个序号,只能展示最大或最小的序号
    部门 公车补贴1 公车补贴2 公车补贴合计 私车补贴1 私车补贴2 私车补贴合计 全部合计
    0 1058.00 1592.00 2650.00 0.00 0.00 0.00 2650.00
    1 0.00 0.00 0.00 796.00 1096.00 1892.00 1892.00
    --展示最大或最小的序号
    序号  部门 公车补贴1 公车补贴2 公车补贴合计 私车补贴1 私车补贴2 私车补贴合计 全部合计
    cb1001 0 1058.00 1592.00 2650.00 0.00 0.00 0.00 2650.00
    cb1005 1 0.00 0.00 0.00 796.00 1096.00 1892.00 1892.00*/