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
質問: 上記のクエリでは、なぜDT2ではなくDT1でNullが取得されているのか理解できません。ここでは、Order by Clauseの解析関数MAXにどのような影響がありますか?解析機能MAXの問題
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
どのような結果が得られますか? –
DT \t \t \t \t || DT1 \t \t \t \t || A \t || D \t \t \t \t || C \t || E NULL \t \t \t || 2014年10月4日0:03 \t || 9 \t || 10/8/2016 0:03 \t || 1 \t || 1 NULL \t \t \t || 2014年10月4日0:03 \t || 3 \t || 2016年10月7日0:03 \t || 1 \t || 1 NULL \t \t \t || 2014年10月4日0:03 \t || 2 \t || 10/6/2016 0:03 \t || 6 \t || 1 10/4/2016 0:03 \t || 2014年10月4日0:03 \t || 5 \t || 2014年10月4日0:03 \t || 2 \t || 1 10/4/2016 0:03 \t || 2014年10月4日0:03 \t || 1 \t || 10/3/2016 0:03 \t || 2 \t || 1 – KrGk