|
| 1 | +WITH VCH_DATES AS( |
| 2 | + SELECT M3.PONBR, M3.PLT, M3.ISSDTE, C.VNDID, D.CALENDARDATE, |
| 3 | + DATEDIFF(DAY, LAG(D.CALENDARDATE) OVER (PARTITION BY C.VNDID, M3.PLT ORDER BY D.CALENDARDATE ASC), D.CALENDARDATE) AS DaysBetween |
| 4 | + |
| 5 | + FROM DPMORDM3 M3 |
| 6 | + JOIN DPMORDM0 M0 |
| 7 | + ON M3.PONBR = M0.PONBR |
| 8 | + INNER JOIN DIMDATE D |
| 9 | + ON M3.ISSDTE = D.julianDate |
| 10 | + LEFT JOIN DCSCIM C |
| 11 | + ON C.ITMID = M3.ITMID |
| 12 | + WHERE calendarYear >= '2025' AND COPCLSCD = 'RSLE' AND M3.ITMID <> 'CANCELLED' AND M0.POTYP = 'R' |
| 13 | + GROUP BY M3.PONBR, M3.PLT, M3.ISSDTE, C.VNDID, D.CALENDARDATE |
| 14 | +), |
| 15 | + |
| 16 | + |
| 17 | +DAY_RANGE AS( |
| 18 | + SELECT *, |
| 19 | + MAX(DaysBetween) OVER (PARTITION BY VNDID, PLT) |
| 20 | + - MIN(DaysBetween) OVER (PARTITION BY VNDID, PLT) AS Day_Range |
| 21 | + FROM VCH_DATES |
| 22 | +), |
| 23 | + |
| 24 | +GROUPED AS( |
| 25 | + SELECT PLT, VNDID, |
| 26 | + CAST(AVG(DAYSBETWEEN) AS DECIMAL (10,4)) AS Avg_Days_Between, CAST(AVG(DAY_RANGE) AS DECIMAL (10,4)) AS DaysRange |
| 27 | + FROM DAY_RANGE |
| 28 | + GROUP BY PLT, VNDID |
| 29 | +), |
| 30 | + |
| 31 | +RATIO AS( |
| 32 | + SELECT *, |
| 33 | + CASE WHEN Avg_Days_Between = 0 THEN 0 ELSE ROUND((DaysRange / Avg_Days_Between), 4) END AS DaysRatio |
| 34 | + FROM GROUPED |
| 35 | +), |
| 36 | + |
| 37 | +ITEM_CATEGORY AS( |
| 38 | + SELECT *, |
| 39 | + CASE |
| 40 | + WHEN DaysRatio > 2 THEN '4 Extreme Flux' |
| 41 | + WHEN DaysRatio > 1 THEN '3 Mild Flux' |
| 42 | + WHEN DaysRatio > 0.5 THEN '2 Average Flux' |
| 43 | + ELSE '1 Steady' END as Category |
| 44 | + FROM RATIO |
| 45 | +) |
| 46 | + |
| 47 | +SELECT * |
| 48 | +FROM ITEM_CATEGORY |
| 49 | +WHERE VNDID = 'SPE49' |
| 50 | +ORDER BY PLT, Category ASC; |
| 51 | + |
| 52 | + |
| 53 | +WITH VOUCHER AS( |
| 54 | +SELECT M3.PONBR, M3.PLT, M3.ISSDTE, C.VNDID, D.CALENDARDATE, M0.POTYP, |
| 55 | + DATEDIFF(DAY, LAG(D.CALENDARDATE) OVER (PARTITION BY C.VNDID, M3.PLT ORDER BY D.CALENDARDATE ASC), D.CALENDARDATE) AS DaysBetween |
| 56 | + |
| 57 | + FROM DPMORDM3 M3 |
| 58 | + JOIN DPMORDM0 M0 |
| 59 | + ON M3.PONBR = M0.PONBR |
| 60 | + INNER JOIN DIMDATE D |
| 61 | + ON M3.ISSDTE = D.julianDate |
| 62 | + LEFT JOIN DCSCIM C |
| 63 | + ON C.ITMID = M3.ITMID |
| 64 | + WHERE calendarDate > '9/20/2025' AND COPCLSCD = 'RSLE' AND M3.ITMID <> 'CANCELLED' |
| 65 | + GROUP BY M3.PONBR, M3.PLT, M3.ISSDTE, C.VNDID, M0.POTYP, D.CALENDARDATE |
| 66 | +) |
| 67 | + |
| 68 | +SELECT PLT, POTYP, COUNT(PONBR) AS COUNTS |
| 69 | +FROM VOUCHER |
| 70 | +GROUP BY PLT, POTYP |
| 71 | +ORDER BY PLT, POTYP |
0 commit comments