sql >> Databáze >  >> RDS >> PostgreSQL

Postgres - Jak převést řádek s rozsahem int na meziřádky z jednotlivých hodnot z tohoto rozsahu?

Použijte generate_series() :

select gs.i, t.*
from t cross join lateral
     generate_series(start_i, end_i, 1) gs(i);

Přesně řečeno, lateral není potřeba. Ale vysvětluje, co se děje. Měl bych také poznamenat, že můžete také:

select generate_series(start_i, end_i) as i, t.*
from t;

Nicméně generate_series() ovlivňuje počet řádků v dotazu. Je mi nepříjemné mít takové efekty v SELECT klauzule.




  1. Oracle :jak odečíst dvě data a získat minuty výsledku

  2. Práce s Java daty v Qlik Sense

  3. Použití Jquery Ajax k načtení dat z Mysql

  4. Nejlepší způsob, jak udržet pole TEXT jedinečné v databázi MySQL