Bill Karwin ne fa menzione, ma penso che questo meriti di essere sottolineato molto chiaramente:
SQL non fa quello che stai chiedendo, quindi qualsiasi "soluzione" che ottieni sarà un pasticcio.
Se sai , di sicuro, funzionerà sempre su un Oracle 10, quindi sicuramente la tabella incrociata di Walter Mitty potrebbe farlo. Il modo giusto per farlo è utilizzare la combinazione più semplice di ordinamento nella query e nel codice dell'applicazione per impaginarlo correttamente.
- Funziona su altri sistemi di database,
- non corre il rischio che altri livelli vengano eliminati (ricordo che MySQL aveva un problema con>255 colonne, ad esempio. Sei sicuro di essere libreria di interfaccia fa fronte così come il db stesso?)
- non è (di solito) molto più difficile.
Se necessario, puoi semplicemente chiedere il Content_Row_ID
s prima, quindi chiedi le righe di cui hai bisogno, ordinate per CampaignID
, ContentRowID
, che ti darebbe ciascuna cella (popolata) in ordine da sinistra a destra, riga per riga.
Sal.
Ci sono un sacco di cose che l'uomo moderno pensa che SQL dovrebbe avere/fare che semplicemente non c'è. Questo è uno, gli intervalli generati sono un altro, chiusura ricorsiva, parametrico ORDER BY
, linguaggio di programmazione standardizzato... l'elenco potrebbe continuare. (anche se, è vero, c'è un trucco per ORDER BY
)