Oracle SQL 記錄

需求看起來很簡單,如果通過3條SQL去每個統計一遍是分分鐘的事

但如果放在一條SQL裏查詢所有數據,還是需要思考下。

SELECT NVL(SUM(DECODE(TO_CHAR(T.T_NETWORKTIME, 'YYYY'),
                              TO_CHAR(SYSDATE, 'YYYY'),
                              1,
                              0)),
                   0) LW_NUM,--統計當年聯網的企業數
               NVL(SUM(DECODE(TO_CHAR(T.T_NETWORKTIME, 'YYYY'),
                              TO_CHAR(SYSDATE, 'YYYY'),
                              T.JKD_NUM,
                              0)),
                   0) JKD_NUM,--統計當年聯網企業所有監控點數
               NVL(SUM(DECODE(T.T_SHZT, '待審覈', 1, 0)), 0) DSH_NUM --統計所有狀態爲待審覈的企業數
          FROM (SELECT Q.T_NETWORKTIME,
                       Q.GUID,
                       Q.T_SHZT,
                       (SELECT COUNT(1)
                          FROM ZTS_JKDXX JKD
                          JOIN ZTS_PFKJBXX PFK
                            ON JKD.T_PWK_ID = PFK.GUID
                         WHERE PFK.T_QY_ID = Q.GUID) JKD_NUM --查詢每個企業對應的監控點數
                  FROM ZTS_QYJBXX Q) T  --先查所有的企業數據

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章