=====Die SQL Model Clause in der Oracle Datenbank verwenden===== {{ :images:malcesine_gardasee.sql.png?direct|Malcesine am Gardasee - zu schön für SQL .-) }} Mit der Model Clause können erweiterte Analysen und Funktionen auf der Ergebnis Menge einer SQL Abfrage durchgeführt werden. Übersicht Syntax: **SQL Abfrage** \\ **MODEL** \\ **PARTITION BY ()** \\ **DIMENSION BY ()** \\ **MEASURES()** \\ **RULES()** \\ Ein erstes Beispiel für eine SQL Abfrage für eine dynamischen Kalender für den gerade aktuellen Tag: column key heading "Stunde" column row_val heading "Datum und Stunde" select * from (select dummy as key, dummy as row_val from dual) MODEL DIMENSION BY (0 as key) MEASURES( cast( null as date ) as row_val ) RULES ITERATE (24) ( row_val[ITERATION_NUMBER] = trunc(sysdate)+(1/24*ITERATION_NUMBER) ) / Die obige SQL Abfrage mit DUAL dient nur dazu im ersten Schritt nur eine Zeile zu erzeugen, diese wird aber erst gar nicht ausgewertet. Mit der **RULES ITERATE (24)** Angabe wird eine Liste mit 24 Zeilen erzeugt. Mit dieser Technik läßt sich dann eine komplexe dynamische universelle Zeit Dimension erstellen. Demnächst mehr ... ---- ====Quellen==== Oracle 10g: * http://docs.oracle.com/cd/B19306_01/server.102/b14223/sqlmodel.htm Oracle 12c: * https://docs.oracle.com/database/121/DWHSG/sqlmodel.htm Allgemein: * http://www.oracle.com/technetwork/database/bi-datawarehousing/wp-in-database-analytics-12c-2132656.pdf Web: * https://apex.oracle.com/pls/apex/germancommunities/apexcommunity/tipp/4461/index.html