Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak uzyskać podobną wartość w Oracle

Oto rozwiązanie, które działałoby dla MySQL. Używa skorelowanego podzapytania w klauzuli select do grupowania konkatenacji razem Col2 wartości. Logika jest taka, że ​​agregujemy tylko wartości mniejsze lub równe aktualnemu wierszowi dla danej grupy rekordów dzielących ten sam Col1 wartość.

SELECT
    Col1,
    (SELECT GROUP_CONCAT(t2.Col2 ORDER BY t2.Col2) FROM yourTable t2
     WHERE t2.Col2 <= t1.Col2 AND t1.Col1 = t2.Col1) Col2
FROM yourTable t1
ORDER BY
    t1.Col1,
    t1.Col2;

Demo

Oto to samo zapytanie w Oracle:

SELECT
    Col1,
    (SELECT LISTAGG(t2.Col2, ',') WITHIN GROUP (ORDER BY t2.Col2) FROM yourTable t2
     WHERE t2.Col2 <= t1.Col2 AND t1.Col1 = t2.Col1) Col2
FROM yourTable t1
ORDER BY
    t1.Col1,
    t1.Col2;

Demo

Zauważ, że jedyną prawdziwą zmianą jest zastąpienie LISTAGG dla GROUP_CONCAT .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przestarzałe:mysql_connect()

  2. MySQL UPDATE dołącza dane do kolumny

  3. Podejścia do shardingu MySQL?

  4. Polecenie SQL do wyświetlenia i wyświetlenia wszystkich baz danych w MySQL i MariaDB

  5. Dynamiczne tworzenie kolumn z danych wierszy za pomocą funkcji Wybierz w BigQuery