On Tue, Feb 14, 2017 at 12:04 PM, Alessandro Baggi <
alessandro.ba...@gmail.com> wrote:

> Hi list,
> sorry for my english, I will try to example as well. I've a query that
> joins multiple tables and return a result like:
>
>
> ​​
> id,customers,phone,code,number
> 1 , aaaaaaaa,33333,123 , 2
> 2 , aassdsds,33322,211 , 1
> 3 , oooooooo,21221,221 , 1
>
>
> I need, where "number" field is > 1, to duplicate the row * N(number field
> value) with a result like this:
>
> id,customers,phone,code,number
> 1 , aaaaaaaa,33333,123 , 2
> 1 , aaaaaaaa,33333,123 , 2
> 2 , aassdsds,33322,211 , 1
> 3 , oooooooo,21221,221 , 1
>
> How I can accomplish to this problem?
>
> I'm using postgresql 9.3.15


​I don't have PostgreSQL 9.3.15. I am running 9.5.5. But I think the
following recursive CTE should work for you.​

====

tsh009=# \d baggi
      Table "public.baggi"
  Column   |  Type   | Modifiers
-----------+---------+-----------
 id        | integer |
 customers | text    |
 phone     | text    |
 code      | integer |
 number    | integer |

tsh009=# select * from baggi;
 id | customers | phone | code | number
----+-----------+-------+------+--------
  1 | aaaaaaaa  | 33333 |  123 |      2
  2 | aassdsds  | 33322 |  211 |      1
  3 | oooooooo  | 21221 |  221 |      1
(3 rows)

tsh009=# with recursive multiple(k, id, customers, phone, code, number) as (
select 1, id, customers, phone, code, number from baggi
UNION ALL
select m.k + 1, b.id, b.customers, b.phone, b.code, b.number from multiple
AS m, baggi AS b  where m.id = b.id and m.k < b.number )
select id, customers, phone, code, number from multiple order by id
;
 id | customers | phone | code | number
----+-----------+-------+------+--------
  1 | aaaaaaaa  | 33333 |  123 |      2
  1 | aaaaaaaa  | 33333 |  123 |      2
  2 | aassdsds  | 33322 |  211 |      1
  3 | oooooooo  | 21221 |  221 |      1
(4 rows)



====



> .
>
> thanks in advance.
>
> Alessandro.
>


-- 
"Irrigation of the land with sewater desalinated by fusion power is
ancient. It's called 'rain'." -- Michael McClary, in alt.fusion

Maranatha! <><
John McKown

Reply via email to