网上SQL问题连载5

问题出处:http://topic.csdn.net/u/20091209/14/554a7480-c6c1-4005-a4dc-bfbf99813c96.html?84247

 

          A 表
  Name Count  Date
  AA    2  2009/11/10
  AA    5  2009/7/10
  AA    3  2009/6/11
  AA    9  2009/11/18
  AA    4  2009/2/10
  AA    6  2009/9/14
  AA    3  2009/3/10
  AA    6  2009/4/10
  AA    8  2009/11/1
  AA    5  2009/11/19
  AA    4  2009/2/10
  AA    6  2008/11/15
      查詢條件 為: 2009年
  需要得到的結果為: A表
  Date  Name  Count
  1月    AA    0
  2月    AA    8
  3月    AA    3 
  4月    AA    6
  5月    AA    0
  6月    AA    3
  7月    AA    5
  8月    AA    0
  9月    AA    6
  10月    AA    0
  11月    AA    30 
  12月    AA    0           
                          謝謝!

 

  1. WITH TMP_A AS (  
  2.   SELECT T.NAME, TO_CHAR(T.DATE1, 'MM') AS MM, SUM(T.COUNT) AS COUNT  
  3.   FROM A T  
  4.  GROUP BY TO_CHAR(T.DATE1, 'MM'), T.NAME  
  5.  ORDER BY TO_CHAR(T.DATE1, 'MM')  
  6. ),  
  7. TMP_TABLE AS (  
  8.   SELECT LEVEL AS TMP_LEVEL  
  9.     FROM DUAL   
  10.   CONNECT BY LEVEL < 13  
  11. )  
  12.   
  13. SELECT  
  14.  TMP_TABLE.TMP_LEVEL || '月',  
  15.  CASE WHEN TMP_A.COUNT IS NULL THEN 0  
  16.  ELSE TMP_A.COUNT END AS COUNT  
  17. FROM  
  18. TMP_A,  
  19. TMP_TABLE  
  20. WHERE  
  21. TMP_A.MM (+) = TMP_TABLE.TMP_LEVEL  
  22. ORDER BY   
  23. TMP_TABLE.TMP_LEVEL  

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值