SELECT SUM(COL3) COL3_QTY
--, SUM(SUM(DISTINCT COL2) OVER(PARTITION BY COL1) ) COL2_QTY
FROM (
SELECT 'A' COL1, 11 COL2, 31 COL3 FROM DUAL UNION ALL
SELECT 'A' COL1, 11 COL2, 32 COL3 FROM DUAL UNION ALL
SELECT 'A' COL1, 11 COL2, 32 COL3 FROM DUAL UNION ALL
SELECT 'B' COL1, 22 COL2, 33 COL3 FROM DUAL
) A
;
위 쿼리에서 한번만에 COL3의 합계와 col1으로 중복제거한 col2 수량합계를 나오게 할수 있나요?
주석처리한 부분은 사용이 안되네요...
감싸서 하면 되긴하는데 간단히 안될까요?
-----추가설명-----
COL1, COL2는 부모의 컬럼이므로 한번만 계산되어야 함. COL3은 자식의 컬럼이므로 각 합산.
즉, COL2_QTY의 수는 11+22= 33이 되어야 합니다.
제가 한 방법은
WITH TAB AS(
SELECT 'A' COL1, 11 COL2, 31 COL3 FROM DUAL UNION ALL
SELECT 'A' COL1, 11 COL2, 32 COL3 FROM DUAL UNION ALL
SELECT 'A' COL1, 11 COL2, 32 COL3 FROM DUAL UNION ALL
SELECT 'B' COL1, 22 COL2, 33 COL3 FROM DUAL
)
select sum(new_col2) new_col2, sum(COL3) COL3
from (
SELECT a.*
, CASE WHEN COL1 <> NVL(LAG(COL1) OVER(ORDER BY COL1),' ') THEN COL2
ELSE 0
END new_col2
FROM TAB A
)
인데
감싸지 않고 바로 하는 방법이 있을것도 같아서 올렸습니다.
질문을 너무 대충 올려서 죄송합니다. ;;;;;