WITH T AS
(
SELECT 'A' LI, '111' ID, 'AB' BA, 1300 QK, 15 SU, 21 QSU FROM DUAL
UNION ALL
SELECT 'A' LI, '111' ID, 'AC' BA, 100 QK, 15 SU, 21 QSU FROM DUAL
UNION ALL
SELECT 'A' L, '222' IDI, 'AB' BA, 1100 QK, 33 SU, 44 QSU FROM DUAL
UNION ALL
SELECT 'A' LI, '222' ID, 'AC' BA, 300 QK, 33 SU, 44 QSU FROM DUAL
UNION ALL
SELECT 'B' LI, '111' ID, 'AB' BA, 500 QK, 11 SU, 12 QSU FROM DUAL
UNION ALL
SELECT 'B' LI, '111' ID, 'AC' BA, 900 QK, 11 SU, 12 QSU FROM DUAL
)
SELECT
LI, ID, BA, SUM(QK) QK, SUM(SU) SU, SUM(QSU) QSU
FROM
T
GROUP BY ROLLUP(LI, ID, BA)
HAVING GROUPING_ID(LI,ID,BA) IN ('0','3','7')
보고 싶은 형태
A | 111 | AB | 1300 | 15 | 21
A | 111 | AC | 100 | 15 | 21
A | 222 | AB | 1100 | 33 | 44
A | 222 | AC | 300 | 33 | 44
합계 | 2 | 빈값임 | 2800 | 48 | 65
B | 111 | AB | 500 | 11 | 12
B | 111 | AC | 900 | 11 | 12
합계 | 1 | 빈값임 | 1400 | 11 | 12
ROLLUP이랑 GROUPING_ID 이용해서 해서 하긴 해봤는데요
합계 부분에서 젤 끝 2개의 컬럼 데이타는
A, 111 기준으로 SUM합 결과 값을 얻고 싶거든요
근데 그게 잘 안되네요
쉽게 말하면...
A | 111 | AB | 1300 | 15 | 21
A | 111 | AC | 100 | 15 | 21
A | 222 | AB | 1100 | 33 | 44
A | 222 | AC | 300 | 33 | 44
합계 | 2 | 빈값임 | 2800 | 48 | 65
여기에서 2는 111, 222 2개의 중복데이타를 하나씩만 COUNT시켜서 2개로 표시 한거구요
2800은 1300 + 100 + 1100 + 300 더한 값입니다.
48은 15 + 33 한 값입니다 중복 데이타 하나씩만 더한거죠
65 도 마찬가지로 중복 데이타 하나씩만 더한겁니다
좀 도와 주세요
부탁 드립니다.
WITH t AS ( SELECT 'A' li, '111' id, 'AB' ba, 1300 qk, 15 su, 21 qsu FROM dual UNION ALL SELECT 'A', '111', 'AC', 100, 15, 21 FROM dual UNION ALL SELECT 'A', '222', 'AB', 1100, 33, 44 FROM dual UNION ALL SELECT 'A', '222', 'AC', 300, 33, 44 FROM dual UNION ALL SELECT 'B', '111', 'AB', 500, 11, 12 FROM dual UNION ALL SELECT 'B', '111', 'AC', 900, 11, 12 FROM dual ) SELECT li , NVL(id, COUNT(DISTINCT id)) id , NVL(ba, '합계') b , SUM(qk) qk , SUM(DISTINCT su) su , SUM(DISTINCT qsu) qsu FROM t GROUP BY li, ROLLUP((id, ba)) ORDER BY t.li, t.id ;보고싶은 형태에 전체합계는 없어서 전체합계 안나오게 했습니다.