oracle 左連接四表關聯查詢示例


1.情景展示

  查詢指定時間段內的某卡的每天的注冊量

2.原因分析

  使用group by按天進行分組查詢,並將查詢結果看做一張表;

  connect by遞歸查詢出指定時間段所橫跨的日期作為主表,注冊量作為輔表,與主表日期進行關聯查詢 

3.解決方案

SELECT NVL(APP_ZS, 0) ONLINE_FORMAL, --''轉0
       NVL(APP_LS, 0) ONLINE_INFORMAL,
       NVL(JG_ZS, 0) OFFLINE_FORMAL,
       NVL(JG_LS, 0) OFFLINE_INFORMAL,
       D.REGDATE REGTIME
  FROM (SELECT COUNT(1) APP_ZS, /*線上正式卡注冊量*/
               TO_CHAR(V.REGTIME, 'YYYY-MM-DD') REGDATE
          FROM VIRTUAL_CARD V, APP_ACCESS A
         WHERE V.IDENTIFIER = A.ID
         GROUP BY TO_CHAR(V.REGTIME, 'YYYY-MM-DD')) ONLINE_FORMAL_CARD_REGIST,
       (SELECT COUNT(1) APP_LS, /*線上臨時卡注冊量*/
               TO_CHAR(V.REGTIME, 'YYYY-MM-DD') REGDATE
          FROM VIRTUAL_CARD_INTERIM V, APP_ACCESS A
         WHERE V.IDENTIFIER = A.ID
         GROUP BY TO_CHAR(V.REGTIME, 'YYYY-MM-DD')) ONLINE_INFORMAL_CARD_REGIST,
       (SELECT COUNT(1) JG_ZS, /*線下正式卡注冊量*/
               TO_CHAR(V.REGTIME, 'YYYY-MM-DD') REGDATE
          FROM VIRTUAL_CARD V, ORG_ACCESS O
         WHERE V.IDENTIFIER = O.ID
         GROUP BY TO_CHAR(V.REGTIME, 'YYYY-MM-DD')) OFFLINE_FORMAL_CARD_REGIST,
       (SELECT COUNT(1) JG_LS, /*線下臨時卡注冊量*/
               TO_CHAR(V.REGTIME, 'YYYY-MM-DD') REGDATE
          FROM VIRTUAL_CARD_INTERIM V, ORG_ACCESS O
         WHERE V.IDENTIFIER = O.ID
         GROUP BY TO_CHAR(V.REGTIME, 'YYYY-MM-DD')) OFFLINE_INFORMAL_CARD_REGIST,
       /*左連接(以天為主表)*/
       (SELECT TO_CHAR(TO_DATE('2020-06-01', 'YYYY-MM-DD') + ROWNUM - 1,
                       'YYYY-MM-DD') AS REGDATE
          FROM DUAL
        CONNECT BY ROWNUM <=
                   TRUNC(TO_DATE('2020-06-17', 'YYYY-MM-DD') -
                         TO_DATE('2020-06-01', 'YYYY-MM-DD')) + 1) D
 WHERE D.REGDATE = ONLINE_FORMAL_CARD_REGIST.REGDATE(+)
   AND D.REGDATE = ONLINE_INFORMAL_CARD_REGIST.REGDATE(+)
   AND D.REGDATE = OFFLINE_FORMAL_CARD_REGIST.REGDATE(+)
   AND D.REGDATE = OFFLINE_INFORMAL_CARD_REGIST.REGDATE(+)
 ORDER BY D.REGDATE;

 

寫在最后

  哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!

 相關推薦:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM