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

行の列の値

    11.1 だけでなく 11.2 を使用している場合は、LISTAGG を使用できます。 集計関数

    SELECT listagg( interval, ',' ) 
             WITHIN GROUP( ORDER BY interval )
      FROM (SELECT DISTINCT range AS interval
              FROM table_name
             WHERE age = 62)
    

    以前のバージョンの Oracle を使用している場合は、他の のいずれかを使用できます。 Oracle 文字列集計手法 ティム・ホールのページ。 11.2 より前は、ユーザー定義の集約関数 できるように

    SELECT string_agg( interval )
      FROM (SELECT DISTINCT range AS interval
                  FROM table_name
                 WHERE age = 62)
    

    ただし、関数を作成したくない場合は、 ROW_NUMBER および SYS_CONNECT_BY_PATH アプローチ ただし、それに従うのは少し難しくなる傾向があります

    with x as (
      SELECT DISTINCT range AS interval
              FROM table_name
             WHERE age = 62 )
    select ltrim( max( sys_connect_by_path(interval, ','))
                    keep (dense_rank last order by curr),
                  ',') range
      from (select interval,
                   row_number() over (order by interval) as curr,
                   row_number() over (order by interval) -1 as prev
              from x)
    connect by prev = PRIOR curr
      start with curr = 1
    



    1. LISTAGGクエリORA-00937:単一グループグループ関数ではありません

    2. 正確なタイミングの SQL Server ジョブ

    3. row_numberを使用してクエリから@@ro​​wcountを取得する効率的な方法

    4. MySQL:NULLフィールドはどのくらいのスペースを使用しますか?