WITH tmp AS
(SELECT 'A' code1, 'X' code2, 1 qty FROM dual UNION ALL
SELECT 'A' code1, '' code2, 2 qty FROM dual UNION ALL
SELECT 'A' code1, '' code2, 1 qty FROM dual UNION ALL
SELECT 'B' code1, '' code2, 3 qty FROM dual UNION ALL
SELECT 'C' code1, 'X' code2, 2 qty FROM dual)
SELECT *
FROM tmp
sample이 위와 같을때 결과를 다음과 같이 뽑고 싶습니다.
code1 qty description
=================
A 4 A3 + X1
B 3
C 2
=================
즉, code1으로 group을 하여 SUM(qty)하는데 문제는 description 부분입니다.
code2에 대해서는 X 또는 Null 두가지 값인데 값이 둘중에 하나만 있으면 desc은 필요없고
둘이면 code1 갯수 + code2 갯수 형태로 보여주면 됩니다.
self join 말고 한 table상에서 하려고 하는데 잘 안되네요...
감사합니다.
WITH tmp AS ( SELECT 'A' code1, 'X' code2, 1 qty FROM dual UNION ALL SELECT 'A' code1, '' code2, 2 qty FROM dual UNION ALL SELECT 'A' code1, '' code2, 1 qty FROM dual UNION ALL SELECT 'B' code1, '' code2, 3 qty FROM dual UNION ALL SELECT 'C' code1, 'X' code2, 2 qty FROM dual ) SELECT code1, SUM(qty) AS qty1, CASE WHEN(MAX(DECODE(code2, 'X', 1, 0)) + MAX(DECODE(code2, '', 1, 0)) > 1) THEN CODE1||COUNT(*)||'+X'||SUM(DECODE(code2, 'X', 1)) ELSE NULL END AS description FROM tmp GROUP BY code1