0

このようなテーブルテストのデータがあります

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

今、フィールドチャンスの値で計算する複数の出力を持つテーブルテストから選択したい

このような出力

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

pgsqlデータベースでコマンドを選択するには?

4

2 に答える 2

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 フィドルの例

于 2013-07-27T07:33:43.347 に答える