Oracle
 sql >> Base de données >  >> RDS >> Oracle

Pivotement d'un tableau en SQL (c'est-à-dire tableau croisé / tableau croisé)

Bill Karwin le mentionne, mais je pense que cela mérite d'être souligné très clairement :

SQL ne fait pas ce que vous demandez, donc toute "solution" que vous obtiendrez sera un jeu d'enfant.

Si vous savez , bien sûr, il fonctionnera toujours sur un Oracle 10, alors bien sûr, le tableau croisé de Walter Mitty pourrait le faire. La bonne façon de le faire est de travailler la combinaison la plus simple d'ordre de tri dans la requête et le code d'application pour le présenter correctement.

  • Cela fonctionne sur d'autres systèmes de base de données,
  • cela ne risque pas d'écraser d'autres couches (je me souviens que MySQL avait un problème avec>255 colonnes par exemple. Êtes-vous sûr de votre bibliothèque d'interface gère ainsi que la base de données elle-même ?)
  • ce n'est (généralement) pas si difficile.

Si vous en avez besoin, vous pouvez simplement demander le Content_Row_ID s d'abord, puis demandez les lignes dont vous avez besoin, classées par CampaignID , ContentRowID , ce qui vous donnerait chaque cellule (remplie) dans l'ordre de gauche à droite, ligne par ligne.

Ps.

Il y a un tas de choses que l'homme moderne pense que SQL devrait avoir/faire qui n'existent tout simplement pas. Ceci en est un, les plages générées en sont une autre, fermeture récursive, paramétrique ORDER BY , langage de programmation standardisé... la liste est longue. (bien que, certes, il y ait une astuce pour ORDER BY )