2013-07-27 1 views
0

당신의 도움이 필요합니다.1 행 (posgresql)에서 여러 행 출력으로 데이터를 선택하는 방법

나는 내가 다중 출력 테이블 테스트에서 선택

출력이

customer_no | name 
------------------ 
00000000001 | AAAA 
00000000001 | AAAA 
00000000001 | AAAA 
00000000002 | BBBB 
00000000002 | BBBB 
00000000003 | CCCC 
같은 필드 기회의 값으로 계산이 할 지금이

customer_no | name | chance 
--------------------------- 
00000000001 | AAAA |  3 
00000000002 | BBBB |  2 
00000000003 | CCCC |  1 

같은 테이블 테스트에서 데이터를

pgsql 데이터베이스에서 명령을 선택하는 방법 ?? 누구든지 제발 도와주세요.

감사합니다.

TUU

답변

1
with recursive CTE_nums as (
    select max(chance) as num from test 
    union all 
    select num - 1 from CTE_nums 
    where num > 1 
) 
select 
    t.customer_no, t.name 
from test as t 
    inner join CTE_nums as n on n.num <= t.chance 
order by 1, 2 

SQL FIDDLE EXAMPLE

4

이 시도 :

여기
SELECT customer_no, name FROM (
    SELECT test.*, 
      generate_series(1,chance) i 
    FROM test 
) test; 

demo이다.

+0

[당신의 치료 코드] (http://www.sqlfiddle.com/#!1/9b879/5) –

+0

+1, 완전히 postgres에서 generate_series를 잊어 버렸습니다. 저는 항상 SQL Server를 사용하고 있습니다 :) –