저도 살짝함 올려 봅니다. ^^
WITH mst AS( SELECT 'key1' key1 FROM dual UNION ALL SELECT 'key2' key1 FROM dual UNION ALL SELECT 'key3' key1 FROM dual ), dtl AS( SELECT 'key1' key1, '01' key2, 'A' VAL FROM dual UNION ALL SELECT 'key1' key1, '02' key2, 'B' VAL FROM dual UNION ALL SELECT 'key1' key1, '03' key2, 'B' VAL FROM dual UNION ALL SELECT 'key1' key1, '03' key2, 'C' VAL FROM dual UNION ALL SELECT 'key2' key1, '01' key2, 'A' VAL FROM dual UNION ALL SELECT 'key2' key1, '02' key2, 'A' VAL FROM dual UNION ALL SELECT 'key3' key1, '01' key2, '' VAL FROM dual ) select a.key1, decode(sign(count(distinct b.val)-1), 0, min(b.val), 1, 'mulit') key_val from mst a, dtl b where a.key1 = b.key1 group by a.key1 ORDER BY a.key1