ITEM SEQ T1_AMT T2_AMT 차이
-------- ------ ----------- ------------ ---------
A TOT 450 450 0
1 100
2 200
3 150
B TOT 420 420
1 100
2 120
3 200
C TOT 300 -300
D TOT 600 500 100
1 100
2 300
3 200
SELECT min(decode(No, 1, item)) Item,
min(decode(No, 1,'TOT', seq)) seq,
sum(decode(sw, 0, amt)) t1_amt,
sum(decode(sw, 2, amt)) t2_amt,
sum((1-sw)*decode(No,1,amt)) 차이
FROM ( SELECT item, No, decode(No,1,'TOT',seq) seq, sum(amt) amt, 0 sw
FROM (SELECT item, seq, amt FROM TAB1
WHERE ymd like '199803%' ) x, COPY_T y
WHERE y.No <= 2
GROUP BY item, No, decode(No,1,'TOT',seq)
UNION ALL
SELECT item, 1 No, 'TOT' seq, amt, 2 sw
FROM TAB2
WHERE ym = '199803' )
GROUP BY item, No, seq ;
인라인뷰를 사용하면 특수 목적을 위한 임의의 중간집합을 다양하게 생성할 수 있으며, 이러한 집합을 적절하게 조인하여 전체 집합을 확장하고 DECODE를 사용하여 상황에 따라 다양한 IF처리를 한다면 무한한 SQL의 확장이 가능함