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

Oracle LITAGG() dla wielu atrybutów?

select K, listagg(case when chgv1 = 1 then v1 else null end,',') within group (order by v1) as v1lst, --Only consider cases in listagg when rows have changed
          listagg(case when chgv2 = 1 then v2 else null end,',') within group (order by v2) as v2lst  --Only consider cases in listagg when rows have changed
from (
 select k, v1, v2,
        row_number() over (partition by k,v1 order by v1 ) as chgv1, --Detect changes in v1. In this case it's 1.
        row_number() over (partition by k,v2 order by v1 ) as chgv2  --Detect changes in v1. In this case it's 1.
 from t)
group by k;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. InMemory DUPLIKAT Zamieszanie w Oracle RAC

  2. Wybierz ciąg jako liczbę w Oracle

  3. % zaloguj się w PreparedStatement Javy

  4. transponuj kolumnę do wiersza oracle

  5. Jak używać QUERY w expdp, aby wyodrębnić tylko dane z ostatnich 3 miesięcy