sql >> Databáze >  >> RDS >> Oracle

hodnoty sloupců v řádku

Pokud používáte verzi 11.2 spíše než pouze 11.1, můžete použít LISTAGG agregační funkce

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

Pokud používáte dřívější verzi Oracle, můžete použít jednu z dalších Techniky agregace řetězců Oracle na stránce Tima Halla. Před verzí 11.2 bych osobně preferoval vytvoření uživatelsky definované agregační funkce abyste pak mohli

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

Pokud však funkci vytvořit nechcete, můžete použít Přístup ROW_NUMBER a SYS_CONNECT_BY_PATH i když to má tendenci být trochu těžší sledovat

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. Formát PHP date() při vkládání do datetime v MySQL

  2. Kód chyby 1292 Mysql DateTime

  3. SequelizeJS - hasMany to hasMany na stejném stole se spojovací tabulkou

  4. Získejte seznam argumentů s výchozí hodnotou