Oracle Lag Lead 統計N天以內可以合併但是沒有合併的採購單

tiptop,可以合併但是沒有合併的採購單(7天以內)

轉載請註明出處,聯繫我: [email protected]
本人熱衷於數據庫技術及算法的研究,志同道合之士, 歡迎探討

SELECT ROWNUM A,
       PMN04,
       PMN041,
       PMN01,
       PMC03,
       PMM04,
       PMN02,
       PMN33,
       PMN20,
       PMN31T_HKD,
       SUB_TOTAL,
       NUMBER_OF_PRICE_LIST
  FROM (SELECT PMN04,
               PMN041,
               PMN01,
               PMC03,
               PMM04,
               PMN02,
               PMN33,
               CASE
                 WHEN LAG_MTL = PMN04 AND LAG_PO <> PMN01 THEN
                  PMN33 - LAG_DATE
                 ELSE
                  99999
               END LAG_DAYS,
               CASE
                 WHEN LEAD_MTL = PMN04 AND LEAD_PO <> PMN01 THEN
                  LEAD_DATE - PMN33
                 ELSE
                  88888
               END LEAD_DAYS,
               PMN20,
               PMN31T_HKD,
               SUB_TOTAL,
               NUMBER_OF_PRICE_LIST
          FROM (SELECT PMN04,
                       PMN041,
                       PMN01,
                       PMC03,
                       PMM04,
                       PMN02,
                       PMN33,
                       LAG(PMN04, 1, NULL) OVER(ORDER BY PMN04, PMN33) LAG_MTL,
                       LAG(PMN01, 1, NULL) OVER(ORDER BY PMN04, PMN33) LAG_PO,
                       LAG(PMN33, 1, NULL) OVER(ORDER BY PMN04, PMN33) LAG_DATE,
                       LEAD(PMN04, 1, NULL) OVER(ORDER BY PMN04, PMN33) LEAD_MTL,
                       LEAD(PMN01, 1, NULL) OVER(ORDER BY PMN04, PMN33) LEAD_PO,
                       LEAD(PMN33, 1, NULL) OVER(ORDER BY PMN04, PMN33) LEAD_DATE,
                       PMN20,
                       PMN31T * PMM42 PMN31T_HKD,
                       PMN20 * PMN31T * PMM42 SUB_TOTAL,
                       NVL(NUMBER_OF_PRICE_LIST, 1) NUMBER_OF_PRICE_LIST
                  FROM PMM_FILE
                  LEFT JOIN PMN_FILE
                    ON PMM01 = PMN01
                  LEFT JOIN PMC_FILE
                    ON PMM09 = PMC01
                  LEFT JOIN VIEW_NUMBER_OF_PRICE_LIST
                    ON (PMN04 = PMJ03 AND PMM09 = PMI03)
                 WHERE PMM18 = 'Y'
                   AND PMMUD02 = 'Y'
                   AND PMN33 > GET_FORWARD_DATE(0)--自定義函數,可以拿到當天日期
                 ORDER BY PMN04, PMN33)
         ORDER BY PMN04, PMN33)
WHERE (LAG_DAYS <= 7 OR LEAD_DAYS <= 7)
   --AND ROWNUM < 20
ORDER BY PMN04, PMN33
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章