求合计和百分比 数据库查询

 
下面是一个统计的数据库查询,建立了两个临时表,对数据做操作。
还有就是求百分比的操作
  1. select distinct '行政单位' =
  2. case
  3. when 行政区='440608' then '一区'
  4. when 行政区='440607' then '二区'
  5. when 行政区='440606' then '三区'
  6. when 行政区='440605' then '四区'
  7. when 行政区='440604' then '五区'
  8. else ''
  9. end,sum(总金额) as 金额
  10. into #now
  11. from 计费 
  12. where 年份=2007 and 起始月份=4 and 结束月份=6 
  13. group by 行政区
  14. select * from #now
  15. go
  16. --drop table #now
  17. select distinct '行政单位' =
  18. case
  19. when 行政区='440608' then '一区'
  20. when 行政区='440607' then '二区'
  21. when 行政区='440606' then '三区'
  22. when 行政区='440605' then '四区'
  23. when 行政区='440604' then '五区'
  24. else ''
  25. end,sum(总金额) as 金额
  26. into #ago
  27. from 计费
  28. where 年份=2007 and 起始月份=1 and 结束月份=3
  29. group by 行政区
  30. select * from #ago
  31. go
  32. --drop table #ago
  33. select n.行政单位,n.金额,增长百分比=case 
  34. when isnull(o.金额,0)=0 then '以前没值'
  35. else
  36. ltrim(cast(((isnull(n.金额,0)-isnull(o.金额,0))*100/isnull(o.金额,0))AS decimal(9,2)))+'%'
  37. end
  38. into #all
  39. from #now as n
  40. left outer join #ago as o
  41. on n.行政单位=o.行政单位
  42. select * from #all
  43. //下面是在表里面添加的合计
  44. select 行政单位,金额,增长百分比,xh=0 from #all
  45. union 
  46. select 行政单位='合计',金额=sum(q.金额),增长百分比=case
  47. when isnull(sum(n.金额),0)=0 then '以前没值'
  48. else
  49. ltrim(cast(((sum(n.金额)-sum(o.金额))*100/sum(o.金额))AS decimal(9,2)))+'%'
  50. end,xh=1 
  51. from #all as q,
  52. #now as n,
  53. #ago as o
  54. order by xh
  55. //删除临时表
  56. go
  57. drop table #now
  58. drop table #ago
  59. drop table #all

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值