如何在日期查询中将数据汇总成一个?

时间:2013-07-02 08:27:25

标签: sql oracle date

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) 

2 个答案:

答案 0 :(得分: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')

答案 1 :(得分:0)

按年份和月份分组将起到作用

group by YEAR(yourdae),MONTH(yourdate)