Oracle Analytische Funktionen - Wie die Wiederverwendung einer PARTITION BY-Klausel?

Ich habe geschrieben eine komplexe SQL-Abfrage mit Oracle, in dem möchte ich zwei analytische Funktion auf der gleichen partition.

Let ' s Recht einfach, aber nicht zu viel:

SELECT col1,
       MAX(col2) OVER(PARTITION BY col3, col4, col5, col6,
                                   CASE WHEN col7 LIKE 'foo'
                                        THEN SUBSTR(col7,1,5)
                                        ELSE col7
                                   END
                                   ORDER BY col5 ASC, col6 DESC),
       MIN(col2) OVER(PARTITION BY col3, col4, col5, col6,
                                   CASE WHEN col7 LIKE 'foo'
                                        THEN SUBSTR(col7,1,5)
                                        ELSE col7
                                   END
                                   ORDER BY col5 ASC, col6 DESC)
  FROM my_table;

Gibt es eine elegantere syntax für die Aliquotierung der PARTITION BY - Klausel?

Danke.

  • Wenn man bedenkt, dass die Funktionen, die Sie verwenden, sind MAX und MIN und auch col5 und col6 sind in der partition und die order by, die order by - Klausel für jede Spalte erscheint überflüssig zu sein.
  • Du hast Recht aber dies war gedacht als ein einfaches Beispiel könnte es sein, LAST_VALUE oder jede andere Analyse.
  • möglich, Duplikat der die Anwendung Mehrerer Fenster Funktionen Auf der Gleichen Partition. Dieses Duplikat war nicht leicht zu finden.
InformationsquelleAutor Benoit | 2011-03-29
Schreibe einen Kommentar