Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:sql_oracle_unpivot

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 SQL Pivot Funktion.


Quellen

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
"Autor: Gunther Pipperr"
prog/sql_oracle_unpivot.txt · Zuletzt geändert: 2019/05/17 18:49 von gpipperr