쿼리의 고수님들..ㅠㅠ 1 6 2,248

by 앵호뚱 [2011.05.30 17:10:44]



하나의 테이블에 여러 컬럼이 잇는데

이중하나의 컬럼값에 따라서 컬럼값만큼 로우로 출력되도록 하고 싶은데요.

<table1>
홍길동  3  인천
임꺽정  4  서울

이런식의 테이블이라면

<table1>
홍길동 3 인천
홍길동 3 인천
홍길동 3 인천
임꺽정  4  서울
임꺽정  4  서울
임꺽정  4  서울
임꺽정  4  서울


이런식으로요..
컬럼값이 일정하게 정해진게 아니라 중구난방이라서 고민입니다.

어떻게 해야할까요?
by v상이v [2011.05.30 17:18:57]
WITH TMP AS (
SELECT '홍길동' NAME, '3' CNT, '인천' V FROM DUAL UNION ALL
SELECT '임꺽정' NAME, '4' CNT, '서울' V FROM DUAL
)
SELECT A.*
FROM TMP A
,(SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= (SELECT MAX(CNT) FROM TMP)) B
WHERE A.CNT >= B.LV
ORDER BY A.NAME

by 손님 [2011.05.30 17:29:43]
row_number(partition by 컬럼 order by 컬럼) rn
)where rn=1

by 정형진 [2011.05.30 17:38:59]

with T as(
select'홍길동' name ,'3' cut, '인천' cty from dual union all
select'홍길동' name ,'3' cut, '인천' cty from dual union all
select'홍길동' name ,'3' cut, '인천' cty from dual union all
select'임꺽정' name ,'4' cut, '서울' cty from dual union all
select'임꺽정' name ,'4' cut, '서울' cty from dual union all
select'임꺽정' name ,'4' cut, '서울' cty from dual union all
select'임꺽정' name ,'4' cut, '서울' cty from dual )
select name,cut,cty from
(select name,cut,cty,
row_number()over (partition by name,cut,cty order by name)rn from t)
where rn=1

by v상이v [2011.05.30 17:43:20]
제가 잘못 이해한건가요??

단일 row의 특정 컬럼 수 만큼 row를 늘려달라는걸로 이해했는데....;

by 앵호뚱 [2011.05.30 17:46:55]
컬럼이 한 20개되고요. 그중 한컬럼에 들어가 잇는 숫자만큼 해당 로우를 반복출력하는 거지요. 만약에' 홍길동 서울 강남 벤츠 3 ' 이런 로우가 있으면 똑같은 내용으로 세번출력, 다음로우가 ' 임꺽정 서울 강동 BMW 20' 이러면 똑같은 내용을 20번 뿌려주는....

by 허재영 [2011.05.30 17:48:59]
WITH TMP AS (
SELECT '홍길동' NAME, '3' CNT, '인천' V FROM DUAL UNION ALL
SELECT '임꺽정' NAME, '4' CNT, '서울' V FROM DUAL
)
SELECT NAME,CNT,V
FROM TMP A
CONNECT BY CONNECT_BY_ROOT CNT = CNT
AND LEVEL <= CNT
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입