Skip to content

Commit 8759d10

Browse files
authored
DaysBetweenOrderAgg.sql
1 parent fd7fc52 commit 8759d10

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

DaysBetweenOrderAgg.sql

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
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

Comments
 (0)