작년 1월에 위 제목으로 문의를 올려 마농님께서 아래와 같은 답을 주셔서 잘 이용 하였습니다.
WITH t AS
(
SELECT '1' cd1, 'A' cd2, 'a' cd3 FROM dual
UNION ALL SELECT '1', 'A', 'a' FROM dual
UNION ALL SELECT '1', 'B', 'a' FROM dual
UNION ALL SELECT '2', 'B', 'a' FROM dual
UNION ALL SELECT '2', 'B', 'b' FROM dual
UNION ALL SELECT '2', 'C', 'b' FROM dual
UNION ALL SELECT '3', 'C', 'b' FROM dual
UNION ALL SELECT '3', 'C', 'c' FROM dual
UNION ALL SELECT '3', 'C', 'c' FROM dual
)
SELECT gb
, cd
, COUNT(*) cnt
FROM t
UNPIVOT (cd FOR gb IN (cd1, cd2, cd3))
GROUP BY gb, cd
ORDER BY gb, cd
그런데 얼마전 건수가 대량 테이블의 컬럼별 건수가 약간씩 오차가 나는 테이블이 생겨 확인 해 보니 컬럼에 값이 없을때 컬럼이 null 이면 빠지더군요
이전 테스트한 테이블들은 모두 값이있어서(not null)이어서 문제가 없었습니다.
여러가지로 제가 해봤으나 모두 원하는 답을 찾지 못해 다시 문의 드립니다.
SELECT '1' cd1, 'A' cd2, 'a' cd3 FROM dual
UNION ALL SELECT '1', 'A', 'a' FROM dual
UNION ALL SELECT '1', 'B', 'a' FROM dual
UNION ALL SELECT '2', 'B', 'a' FROM dual
UNION ALL SELECT '2', 'B', 'b' FROM dual
UNION ALL SELECT '2', 'C', 'b' FROM dual
UNION ALL SELECT '3', 'C', 'b' FROM dual
UNION ALL SELECT '3', 'C', 'c' FROM dual
UNION ALL SELECT '3', 'C', 'c' FROM dual
UNION ALL SELECT '', 'C', 'c' FROM dual
UNION ALL SELECT '', 'C', 'c' FROM dual
UNION ALL SELECT '', 'C', 'c' FROM dual
이런식으로 cd1에 값이 없는 경우는 모두 빠지더군요. 이번에도 고수님들의 지도 부탁드립니다.