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

Czy istnieje jakaś funkcja w Oracle podobna do group_concat w mysql?

11g i więcej: Użyj listygg:

SELECT 
    col1,
    LISTAGG(col2, ', ') WITHIN GROUP (ORDER BY col2) "names"
FROM table_x
GROUP BY col1

10 g i mniej: Jedną z metod jest użycie funkcji:

CREATE OR REPLACE FUNCTION get_comma_separated_value (input_val  in  number)
  RETURN VARCHAR2
IS
  return_text  VARCHAR2(10000) := NULL;
BEGIN
  FOR x IN (SELECT col2 FROM table_name WHERE col1 = input_val) LOOP
    return_text := return_text || ',' || x.col2 ;
  END LOOP;
  RETURN LTRIM(return_text, ',');
END;
/

Aby użyć funkcji:

select col1, get_comma_separated_value(col1) from table_name

Uwaga: Istnieje (nieobsługiwana) funkcja WM_CONCAT dostępne w niektórych starszych wersjach Oracle, które mogą Ci pomóc — zobacz tutaj, aby uzyskać szczegółowe informacje.

W MySQL:

SELECT col1, GROUP_CONCAT(col2) FROM table_name GROUP BY col1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd SQL Oracle LEFT JOIN i SUBQUERY:ORA-00905:brak słowa kluczowego

  2. Kolejna biała księga Optymalizatora 12c

  3. Oracle do Excela — procedura eksportu PL/SQL

  4. Jakieś wady flag bitowych w kolumnach bazy danych?

  5. Zrekonstruuj rezerwową bazę danych w stanie gotowości