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…