oracle 查询出某月所有的日期

本文介绍了一种SQL查询方法,用于获取指定月份内每天的水利监测数据,包括多个地点的水位、流量和降雨量等信息。通过连接多个表并使用PIVOT函数,可以按天汇总和展示各项水利指标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 查询所有日期,如下

SELECT '2018-11-' || TRIM(TO_CHAR(ROWNUM, '00')) AS DAYS FROM DUAL
CONNECT BY ROWNUM <= TO_NUMBER(TO_CHAR(LAST_DAY(TO_DATE('2018-11-01', 'YYYY-MM-DD')), 'DD'))

 结果如下


SELECT NVL(DAYS, '合计') DAYS,
       SUM(蚌埠水位) 蚌埠水位,
       SUM(蚌埠流量) 蚌埠流量,
       SUM(蚌埠流量) 蚌埠流量,
       SUM(三河闸流量) 三河闸流量,
       SUM(高邮湖御码头水位) 三河闸流量,
       SUM(邵伯湖水位) 邵伯湖水位,
       SUM(万福闸水位) 万福闸水位,
       SUM(万福闸流量) 万福闸流量,
       SUM(高邮水位) 高邮水位,
       SUM(高邮雨量) 高邮雨量,
       SUM(兴化水位) 兴化水位,
       SUM(城区水位) 城区水位,
       SUM(三垛水位) 三垛水位,
       SUM(三垛雨量) 三垛雨量,
       SUM(横泾水位) 横泾水位,
       SUM(横泾雨量) 横泾雨量,
       SUM(临泽水位) 临泽水位,
       SUM(临泽雨量) 临泽雨量,
       SUM(八桥水位) 八桥水位,
       SUM(八桥雨量) 八桥雨量,
       SUM(界首水位) 界首水位,
       SUM(界首雨量) 界首雨量
  FROM (SELECT T.DAYS,
               T_S.蚌埠水位,
               T_L.蚌埠流量,
               T_S.三河闸水位,
               T_L.三河闸流量,
               T_S.高邮湖御码头水位,
               T_S.邵伯湖水位,
               T_S.万福闸水位,
               T_L.万福闸流量,
               T_S.高邮水位,
               T_Y.高邮雨量,
               T_S.兴化水位,
               T_S.城区水位,
               T_S.三垛水位,
               T_Y.三垛雨量,
               T_S.横泾水位,
               T_Y.横泾雨量,
               T_S.临泽水位,
               T_Y.临泽雨量,
               T_S.八桥水位,
               T_Y.八桥雨量,
               T_S.界首水位,
               T_Y.界首雨量
          FROM (SELECT '2018-11-' || TRIM(TO_CHAR(ROWNUM, '00')) AS DAYS
                  FROM DUAL
                CONNECT BY ROWNUM <= TO_NUMBER(TO_CHAR(LAST_DAY(TO_DATE('2018-11-01',
                                                                        'YYYY-MM-DD')),
                                                       'DD'))) T
          LEFT JOIN (SELECT TO_CHAR(MONITOR_DATE, 'YYYY-MM-DD') MONITOR_DATE,
                           SUM(蚌埠) 蚌埠流量,
                           SUM(三河闸) 三河闸流量,
                           SUM(万福闸) 万福闸流量
                      FROM (SELECT WD.MONITOR_DATE,
                                   WD.AVG_FLOW,
                                   M.SHORT_NAME,
                                   WD.AVG_WATER_LEVEL
                              FROM WM_TD_WATER_DAILY WD
                             INNER JOIN (SELECT T.ID,
                                               T.SHORT_NAME,
                                               T.SELF_CODE,
                                               T.MONITOR_TYPE
                                          FROM BI_TB_MONITOR_BI T
                                         WHERE EXISTS
                                         (SELECT T1.ID
                                                  FROM BI_TB_MONITOR_BI T1
                                                 WHERE REGION_ID = '6-100-018'
                                                   AND MONITOR_TYPE = '00'
                                                   AND T.PARENT_ID = T1.ID)) M
                                ON WD.MONITOR_ID = M.ID
                             WHERE WD.REGION_ID = '6-100-018')
                    PIVOT(SUM(AVG_FLOW)
                       FOR SHORT_NAME IN('蚌埠' 蚌埠,
                                        '三河闸' 三河闸,
                                        '高邮湖御码头' 高邮湖御码头,
                                        '邵伯湖' 邵伯湖,
                                        '万福闸' 万福闸,
                                        '高邮水位' 高邮水位,
                                        '兴化' 兴化,
                                        '城区' 城区,
                                        '三垛水位' 三垛水位,
                                        '横泾水位' 横泾水位,
                                        '临泽水位' 临泽水位,
                                        '八桥水位' 八桥水位,
                                        '界首水位' 界首水位))
                     WHERE TO_CHAR(MONITOR_DATE, 'YYYY-MM') = '2018-11'
                     GROUP BY MONITOR_DATE) T_L
            ON T.DAYS = T_L.MONITOR_DATE
          LEFT JOIN (SELECT TO_CHAR(MONITOR_DAY, 'YYYY-MM-DD') MONITOR_DAY,
                           SUM(高邮雨量) 高邮雨量,
                           SUM(三垛雨量) 三垛雨量,
                           SUM(横泾雨量) 横泾雨量,
                           SUM(临泽雨量) 临泽雨量,
                           SUM(八桥雨量) 八桥雨量,
                           SUM(界首雨量) 界首雨量
                      FROM (SELECT RD.MONITOR_DAY,
                                   RD.DAILY_RAIN_FALL,
                                   M.MONITOR_TYPE,
                                   M.SHORT_NAME
                              FROM IA_TD_RAIN_DATA_DAILY RD
                             INNER JOIN (SELECT T.ID,
                                               T.SHORT_NAME,
                                               T.SELF_CODE,
                                               T.MONITOR_TYPE
                                          FROM BI_TB_MONITOR_BI T
                                         WHERE EXISTS
                                         (SELECT T1.ID
                                                  FROM BI_TB_MONITOR_BI T1
                                                 WHERE REGION_ID = '6-100-018'
                                                   AND MONITOR_TYPE = '00'
                                                   AND T.PARENT_ID = T1.ID)) M
                                ON RD.MONITOR_ID = M.ID
                             WHERE RD.REGION_ID = '6-100-018')
                    PIVOT(SUM(DAILY_RAIN_FALL)
                       FOR SHORT_NAME IN('高邮雨量' 高邮雨量,
                                        '三垛雨量' 三垛雨量,
                                        '横泾雨量' 横泾雨量,
                                        '临泽雨量' 临泽雨量,
                                        '八桥雨量' 八桥雨量,
                                        '界首雨量' 界首雨量))
                     WHERE TO_CHAR(MONITOR_DAY, 'YYYY-MM') = '2018-11'
                     GROUP BY MONITOR_DAY) T_Y
            ON T.DAYS = T_Y.MONITOR_DAY
          LEFT JOIN (SELECT TO_CHAR(MONITOR_DATE, 'YYYY-MM-DD') MONITOR_DATE,
                           SUM(蚌埠) 蚌埠水位,
                           SUM(三河闸) 三河闸水位,
                           SUM(高邮湖御码头) 高邮湖御码头水位,
                           SUM(邵伯湖) 邵伯湖水位,
                           SUM(万福闸) 万福闸水位,
                           SUM(高邮水位) 高邮水位,
                           SUM(兴化) 兴化水位,
                           SUM(城区) 城区水位,
                           SUM(三垛水位) 三垛水位,
                           SUM(横泾水位) 横泾水位,
                           SUM(临泽水位) 临泽水位,
                           SUM(八桥水位) 八桥水位,
                           SUM(界首水位) 界首水位
                      FROM (SELECT WD.MONITOR_DATE,
                                   WD.AVG_FLOW,
                                   M.SHORT_NAME,
                                   WD.AVG_WATER_LEVEL,
                                   MONITOR_TYPE
                              FROM WM_TD_WATER_DAILY WD
                             INNER JOIN (SELECT T.ID,
                                               T.SHORT_NAME,
                                               T.SELF_CODE,
                                               T.MONITOR_TYPE
                                          FROM BI_TB_MONITOR_BI T
                                         WHERE EXISTS
                                         (SELECT T1.ID
                                                  FROM BI_TB_MONITOR_BI T1
                                                 WHERE REGION_ID = '6-100-018'
                                                   AND MONITOR_TYPE = '00'
                                                   AND T.PARENT_ID = T1.ID)) M
                                ON WD.MONITOR_ID = M.ID
                             WHERE WD.REGION_ID = '6-100-018')
                    PIVOT(SUM(AVG_WATER_LEVEL)
                       FOR SHORT_NAME IN('蚌埠' 蚌埠,
                                        '三河闸' 三河闸,
                                        '高邮湖御码头' 高邮湖御码头,
                                        '邵伯湖' 邵伯湖,
                                        '万福闸' 万福闸,
                                        '高邮水位' 高邮水位,
                                        '兴化' 兴化,
                                        '城区' 城区,
                                        '三垛水位' 三垛水位,
                                        '横泾水位' 横泾水位,
                                        '临泽水位' 临泽水位,
                                        '八桥水位' 八桥水位,
                                        '界首水位' 界首水位))
                     WHERE TO_CHAR(MONITOR_DATE, 'YYYY-MM') = '2018-11'
                     GROUP BY MONITOR_DATE) T_S
            ON T.DAYS = T_S.MONITOR_DATE)
 GROUP BY ROLLUP(DAYS)
 ORDER BY DAYS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

起个破名真费劲..

可赏可不赏,没脸要,哈哈

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值