t1의 내용
CODE VAL1 GROUPYN
A 10 N
B 20 N
C 30 N
D 40 N
G1,G2,G3 (null) Y
G1 50 N
G2 60 N
G3 70 N
=================================
원하는 결과
CODE VAL1 GROUPYN
280 (합계 : 10+20+30+40+50+60+70의 결과 입니다.)
A 10 N
B 20 N
C 30 N
D 40 N
G1,G2,G3 180 (그룹소계 : 50+60+70의 결과 입니다.)Y
G1 50 N
G2 60 N
G3 70 N
=================================
WITH t AS
(
SELECT 'A' AS CODE, 10 AS VAL1, 'N' AS GROUPYN FROM dual
UNION ALL SELECT 'B', 20, 'N' FROM dual
UNION ALL SELECT 'C', 30, 'N' FROM dual
UNION ALL SELECT 'D', 40, 'N' FROM dual
UNION ALL SELECT 'G1,G2,G3', NULL, 'Y' FROM dual
UNION ALL SELECT 'G1', 50, 'N' FROM dual
UNION ALL SELECT 'G2', 60, 'N' FROM dual
UNION ALL SELECT 'G3', 70, 'N' FROM dual
)
SELECT *
FROM t
t1의 CODE는 pk이며
GROUPYN의 값이 'Y'일 경우 2개 이상의 코드로 이루어진 그룹이며
그룹의 CODE는 그룹원들의 CODE 값들로 이루어집니다.
위에서 원하는 결과의
[합계 : 10+20+30+40+50+60+70] 부분의 원하는 값은 280
[그룹소계 : 50+60+70] 부분의 원하는 값은 180
의 소계 합계를 구하는 쿼리 좀 부탁드립니다.