안녕하세요 항상 많은 도움을 받는 빵빵이 입니다
이번에 중복 row를 적용하려하니 union all or 두번 select하는 방법 말고 다른 방법이 없나 찾아봐도 답이 없어 질문 드립니다
예를 들어 a 테이블에
이름 구분 나이 성별
홍길동 개인 19 남자
고길순 개인 18 여자
오길동 사업자 22 남자
이렇게 있을때 순수하게 row data를 이용하여 row 데이터를 중복으로 뽑고 싶습니다
구분 이름 나이 성별
10대 홍길동 19 남자
10대 고길순 18 여자
20대 오길동 22 남자
남자 홍길동 19 남자
여자 고길순 18 여자
남자 오길동 22 남자
개인 홍길동 19 남자
개인 고길순 18 여자
사업자 오길동 22 남자
이런 결과값을 보고 싶은데 union all 말곤 없을까요??
WITH T AS ( SELECT '홍길동' 이름 , '개인' 구분 , '19' 나이, '남자' 성별 FROM DUAL UNION ALL SELECT '고길순', '개인' , '18', '여자' FROM DUAL UNION ALL SELECT '구루비', '법인' , 'X' , 'X' FROM DUAL UNION ALL SELECT '오길동', '사업자', '22', '남자' FROM DUAL ) SELECT DECODE(LV,1,RPAD(SUBSTR(나이,1,1),2,'0')||'대',2,성별,구분) AS "구분" ,이름, 나이, 성별 FROM (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= (SELECT COUNT(1) FROM T)) , T ORDER BY LV
WITH t AS ( SELECT '홍길동' 이름, '개인' 구분, 19 나이, '남자' 성별 FROM dual UNION ALL SELECT '고길순', '개인', 18, '여자' FROM dual UNION ALL SELECT '오길동', '사업', 22, '남자' FROM dual ) SELECT CASE WHEN LV = 1 THEN SUBSTR(나이,1,1) || '0' || '대' WHEN LV = 2 THEN 성별 WHEN LV = 3 THEN 구분 END , 이름 , 나이 , 성별 FROM T A ,(SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= 3 ) B ORDER BY B.LV
WITH T AS ( SELECT '홍길동' name , '개인' gubun , '19' age, '남자' sex FROM DUAL UNION ALL SELECT '고길순', '개인' , '18', '여자' FROM DUAL UNION ALL -- SELECT '구루비', '법인' , 'X' , 'X' FROM DUAL UNION ALL SELECT '오길동', '사업자', '22', '남자' FROM DUAL ) SELECT DECODE(a.lv,1, CASE WHEN age BETWEEN '10' AND '19' THEN '10대' WHEN age BETWEEN '20' AND '29' THEN '20대' END ,2,sex ,3,gubun) 구분 ,NAME 이름 ,age 나이 ,sex 성별 FROM T ,(SELECT LEVEL lv FROM dual CONNECT BY LEVEL <=3 ) a