Oracle
 sql >> Database >  >> RDS >> Oracle

Pivoting di una tabella in SQL (ad esempio tabulazione incrociata / tabulazione incrociata)

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 )