===== SQL UNPivot Funktion ===== ** ab 11g ** **Aufgabe** Eine Tabelle enthält 3 Felder für bestimmte Eigenschaften, die drei Eigenschaften sollen aber als Liste untereinander verarbeitet werden. Beispiel: SELECT API_KEY,IP_ADRESS1,IP_ADRESS2,IP_ADRESS3 FROM API_SECURITY ABC 10.10% 192.% 178.% XCY 10.11% 192.123% 179.% -- Die Anzeige soll nun aber lauten: ABC 10.10% ABC 192.% ABC 178.% ... **Lösung**: Oracle UNPIVOT Funktion SELECT API_KEY , IP , IP_ADRESSPOS FROM API_SECURITY UNPIVOT (IP FOR IP_ADRESSPOS IN (IP_ADRESS1 AS '1', IP_ADRESS2 AS '2', IP_ADRESS3 AS '3')); APY_KEY IP IP_ADRESSPOS ------ ----- ------------- ABC 10.10% 1 ABC 192.% 2 ABC 178.% 3 ... Der Trick ist nun in der UNPIVOT Klausel die Spalten aufzulösen, dazu werden zwei beliebige neue Spalten Namen definiert und eine Regel an zugegeben wie das Mapping auf die existierenden Spalten umgesetzt werden soll. Für die andere Richtung siehe auch [[prog:sql_oracle_pivot|SQL Pivot Funktion]]. ---- ==== Quellen ==== Siehe unpivot_clause in https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/SELECT.html#GUID-CFA006CA-6FF1-4972-821E-6996142A51C6