2013-07-27 1 views
0

J'ai besoin de votre aide.Comment sélectionner des données avec une sortie de ligne multiple à partir d'une ligne (posgresql)

Je contiennent des données sur le test de table comme ce

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

Maintenant, je veux choisir de table test avec plusieurs sorties qui calculent par la valeur du hasard sur le terrain

sortie comme celui-ci

customer_no | name 
------------------ 
00000000001 | AAAA 
00000000001 | AAAA 
00000000001 | AAAA 
00000000002 | BBBB 
00000000002 | BBBB 
00000000003 | CCCC 

comment sélectionner la commande dans la base de données pgsql ?? Quelqu'un m'aider s'il vous plaît.

Merci.

Tuu

Répondre

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

Essayez ceci:

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

Voici un demo.

+0

[Votre code nettoyé] (http://www.sqlfiddle.com/#!1/9b879/5) –

+0

+1, totalement oublié de generate_series dans postgres, je travaille avec SQL Server tout le temps :) –

Questions connexes