Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:sql_oracle_unpivot

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
prog:sql_oracle_unpivot [2019/05/17 18:47] – angelegt gpipperrprog:sql_oracle_unpivot [2019/05/17 18:49] (aktuell) – [Quellen] gpipperr
Zeile 1: Zeile 1:
 +===== 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:
 +
 +<code sql>
 +
 +SELECT API_KEY,IP_ADRESS1,IP_ADRESS2,IP_ADRESS3 FROM  API_SECURITY
 +
 +ABC    10.10%   192.%      178.%
 +XCY    10.11%   192.123%   179.%
 +
 +</code>
 +
 +-- Die Anzeige soll nun aber lauten:
 +<code sql>
 +
 +
 +ABC  10.10%   
 +ABC  192.%      
 +ABC  178.%
 +
 +...
 +
 +</code>
 +
 + 
 +**Lösung**: Oracle UNPIVOT Funktion
 +
 +<code sql>
 +
 +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
 +...
 +
 +</code>
 +
 +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
  
prog/sql_oracle_unpivot.txt · Zuletzt geändert: 2019/05/17 18:49 von gpipperr