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

Transpozycja wybranych wyników za pomocą Oracle

Jeśli chcesz wygenerować zapytanie dla każdego wywołania lub użyć zakodowanej na stałe maksymalnej liczby kolumn, możesz zrobić coś takiego:

WITH tab AS
(
  SELECT table_name, column_name FROM user_tab_cols WHERE column_id <= 4
) -- user_tab_cols used to provide test data, use your table instead
SELECT MAX(c1) c1,
       MAX(c2) c2,
       MAX(c3) c3,
       MAX(c4) c4
  FROM (SELECT table_name,
               DECODE( column_id, 1, column_name ) c1,
               DECODE( column_id, 2, column_name ) c2,
               DECODE( column_id, 3, column_name ) c3,
               DECODE( column_id, 4, column_name ) c4
          FROM ( SELECT table_name,
                        column_name,
                        ROW_NUMBER() OVER ( PARTITION BY table_name ORDER BY column_name ) column_id
                   FROM tab
               )
       )
 GROUP BY table_name
 ORDER BY table_name

Jeśli wystarczy, aby uzyskać go w takiej formie

TABLENAME1|COL1,COL2
TABLENAME2|COL1,COL2,COL3

spójrz na stragga Toma Kyte'a.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać szerokość i długość z sdo_geometry w Oracle?

  2. SIGN() Funkcja w Oracle

  3. Otrzymuję błąd ORA - 00907 w następujących miejscach w dniu ON UPDATE

  4. Błąd Oracle .Net ManagedDataAccess:nie można załadować typu „OracleInternal.Common.ConfigBaseClass” z zestawu

  5. Łączenie ciągów zagregowanych w Oracle 10g