2013-07-02 15 views
0
SELECT 
      NVL(DTM, 'SUM') DTM 
      ,COUNT(PKG_SNO) STUDENT_PKG 
      ,COUNT((CASE WHEN SHAR_YN=1 THEN PKG_SNO END)) SHARED 
      ,COUNT((CASE WHEN SHAR_YN=0 THEN PKG_SNO END)) NON_SHARED 
    FROM 
      /* Dates */ 
      (SELECT 
         TO_CHAR (TO_DATE (#startDt#,'YYYY-MM-DD')+LEVEL- 1, 'YYYY.MM.DD') AS DAY 
      FROM DUAL 
       CONNECT BY TO_DATE(#startDt#, 'YYYY-MM-DD') + LEVEL - 1 <= TO_DATE(#endDt#, 'YYYY-MM-DD') 
      ) DAY LEFT OUTER JOIN 



    (
      SELECT 
         TO_CHAR(RGS_DTM, 'YYYY.MM.DD') DTM 
         ,PKG_SNO 
         ,SHAR_YN 
       FROM lrms.v_lrpm_pkg 
      WHERE 
         USE_YNDCD = 1 
         AND MNGT_PRDN_YN ='N' 
         AND PARN_PKG_SNO = 0 
         AND TO_CHAR(RGS_DTM, 'YYYY.MM.DD') BETWEEN #startDt# AND #endDt# 
      ) PKG ON DAY.DAY = PKG.DTM 
GROUP BY ROLLUP(DTM) 
ORDER BY group by YEAR(yourdae),MONTH(yourdate) 
+0

爲什麼*如果你選擇「20130101」和「20130615」,應該每個數據總結成一個,然後一月一行顯示它*?是因爲開始日期是在一月份嗎? –

+0

如果您選擇'20130101'和'20130615',那麼它應該有6列。每列包含每月的總結數據。 Jan應該只包含1月1日到1月31日之間的數據。希望它有幫助。 – user2470075

回答

1

至於我收到了你的要求,你需要聚合一些列每月。您可以使用此:

更新2:

SELECT TRUNC(RGS_DTM, 'MM'), COUNT(PKG_SNO) STUDENT_PKG_COUNT, COUNT(SHARED) SHARED_COUNT, COUNT(NON_SHARED) NON_SHARED_COUNT 

FROM (SELECT PKG_SNO, 
      CASE WHEN SHAR_YN = 1 THEN PKG_SNO END SHARED, 
      CASE WHEN SHAR_YN = 0 THEN PKG_SNO ENDNON_SHARED 
     FROM lrms.v_lrpm_pkg 
     WHERE USE_YNDCD = 1 
      AND MNGT_PRDN_YN = 'N' 
      AND PARN_PKG_SNO = 0 
      AND TO_CHAR(RGS_DTM, 'YYYY.MM.DD') BETWEEN #startDt# AND #endDt#) 
GROUP BY TRUNC(RGS_DTM, 'MM') 
+0

我只是把完整的查詢。希望能幫助到你。 – user2470075

+0

我已經有GROUP BY ROLLUP(DTM)。我還可以添加TRUNC(日期列,'MM')嗎? – user2470075

+0

請檢查我的更新,我想你不需要任何連接按彙總。 –

0

組按年份和月份會做的伎倆

group by YEAR(yourdae),MONTH(yourdate) 
相關問題