Schlagwort: Pivot

  • Spaltenweises Sortieren in Oracle

    Gegeben sei folgende Tabelle:

    Wert Orderer
    A 10
    B 20
    C 30
    D 40
    E 50
    F 60
    G 70
    H 80
    I 90

    Nun mal angenommen folgendes möchten wir irgendwie aus der DB bekommen (Um eine 3 spaltige Tabelle mit tr,td aufzubauen:

    Wert Wert Wert
    A D G
    B E H
    C F I

    Dann benötigen wir die Daten ja in folgender Reihenfolge:

    A,D,G,B,E,H,C,F,I

    Nach langem herumprobieren habe ich alle Versuche über Bord geworfen, und bin zu folgendem, suboptimalen (aufgrund der Subselects), Ergebnis gekommen:


    SELECT wert
    FROM (SELECT wert,
    x,
    ROW_NUMBER () OVER (PARTITION BY x ORDER BY orderer) AS y
    FROM (SELECT wert,
    orderer,
    NTILE (:3) OVER (ORDER BY orderer) AS x
    FROM tabelle))
    ORDER BY y, x

    Hat jemand einen besseren Vorschlag… Ich meine: Funktionieren tut das ganze (In BIND-Variable 3 wird die Anzahl der Spalten übergeben). Aber Sexy geht irgendwie anders…