WITH t AS (
SELECT 9 a
,sysdate d
,1 c
,1 e
FROM dual
UNION
SELECT 1 a
,sysdate - 5 d
,2 c
,1 e
FROM dual
UNION
SELECT 2 a
,sysdate - 2 d
,6 c
,1 e
FROM dual
UNION
SELECT 5 a
,sysdate - 4 d
,2 c
,1 e
FROM dual
UNION
SELECT 3 a
,sysdate - 1 d
,1 c
,1 e
FROM dual )
SELECT MAX(CASE
WHEN c = 2
THEN d
ELSE NULL
END) OVER (
PARTITION BY e ORDER BY d DESC ) DT1
,MAX(CASE
WHEN c = 2
THEN d
ELSE NULL
END) OVER (PARTITION BY e) DT2
,t.*
FROM t
Question: In the above query I am not able to understand Why am getting Nulls in DT1 wherein not in DT2. What is the impact of Order By Clause in the analytical function MAX here?. Please help me understanding this
result:
DT || DT1 || A || D || C || E
NULL || 10/4/2016 0:03 || 9 || 10/8/2016 0:03 || 1 || 1
NULL || 10/4/2016 0:03 || 3 || 10/7/2016 0:03 || 1 || 1
NULL || 10/4/2016 0:03 || 2 || 10/6/2016 0:03 || 6 || 1
10/4/2016 0:03 || 10/4/2016 0:03 || 5 || 10/4/2016 0:03 || 2 || 1
10/4/2016 0:03 || 10/4/2016 0:03 || 1 || 10/3/2016 0:03 || 2 || 1