sql >> データベース >  >> RDS >> PostgreSQL

Postgres-int範囲の行をその範囲の個々の値から中間行に変換する方法は?

    generate_series()を使用します :

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

    厳密に言えば、lateral 必要ありません。しかし、それは何が起こっているのかを説明しています。また、次のこともできることに注意してください。

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

    ただし、generate_series() クエリの行数に影響します。 SELECTでそのような効果を得るのは不快です 条項。




    1. 文字列からシーケンスを取得した後、シーケンスから欠落している番号を見つけますか?

    2. PostgreSQL:列定義リストを使用せずにテーブルから動的行を返す方法は?

    3. MySQLでのgroup_concatのパフォーマンスの問題

    4. Oracle検索ビューのテキスト