Oracle
 sql >> Baza danych >  >> RDS >> Oracle

wartości kolumn w rzędzie

Jeśli korzystasz z 11.2, a nie tylko 11.1, możesz użyć LISTAGG funkcja agregująca

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

Jeśli używasz wcześniejszej wersji Oracle, możesz użyć jednej z pozostałych Techniki agregacji ciągów Oracle na stronie Tima Halla. Przed wersją 11.2 moim osobistym upodobaniem byłoby utworzenie zdefiniowanej przez użytkownika funkcja agregująca dzięki czemu możesz wtedy

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

Jeśli jednak nie chcesz tworzyć funkcji, możesz użyć Podejście ROW_NUMBER i SYS_CONNECT_BY_PATH choć jest to nieco trudniejsze do naśladowania

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie z usługi internetowej i wstawianie CLOB przy użyciu Node.js do tabeli bazy danych Oracle

  2. Wyciek pamięci Permgen z ponownym wdrażaniem na gorąco i bazą danych Oracle

  3. Dapper - wywołaj Oracle schema.package.function

  4. regexp_substr pomija puste pozycje

  5. Prawdziwa długość ciągu, widziana przez Oracle