sql >> Database >  >> RDS >> Oracle

kolomwaarden op een rij

Als je op 11.2 zit in plaats van alleen op 11.1, kun je de LISTAGG . gebruiken geaggregeerde functie

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

Als u een eerdere versie van Oracle gebruikt, kunt u een van de andere gebruiken Aggregatietechnieken voor Oracle-tekenreeksen op de pagina van Tim Hall. Voorafgaand aan 11.2, zou mijn persoonlijke voorkeur zijn om een ​​user-defined geaggregeerde functie zodat je dan

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

Als u echter geen functie wilt maken, kunt u de ROW_NUMBER en SYS_CONNECT_BY_PATH benadering hoewel dat meestal wat moeilijker te volgen is

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. Gegevens uit database verschijnen niet in tabel op HTML-site

  2. Ik krijg dubbele resultaten van mysql-query bij gebruik van internationale tekens, d.w.z. Å/Ä=A &Ö=O,

  3. heb een select die 10 query's in doctrine doet (Symfony)

  4. Hoe schrijf ik een Django-query met een subquery als onderdeel van de WHERE-component?