sql >> Base de Datos >  >> RDS >> Oracle

Pivotar una tabla en SQL (es decir, tabulación cruzada / tabulación cruzada)

Bill Karwin menciona esto, pero creo que esto merece ser señalado muy claramente:

SQL no hace lo que está pidiendo, por lo que cualquier "solución" que obtenga será una chapuza.

Si sabes , seguro, siempre se ejecutará en un Oracle 10, entonces seguro, la tabulación cruzada de Walter Mitty podría hacerlo. La forma correcta de hacerlo es trabajar con la combinación más sencilla de ordenación en la consulta y el código de la aplicación para diseñarlo correctamente.

  • Funciona en otros sistemas de bases de datos,
  • no corre el riesgo de que otras capas se rompan (recuerdo que MySQL tuvo un problema con>255 columnas, por ejemplo. ¿Estás seguro de que tienes una biblioteca de interfaz? se adapta tan bien como la propia base de datos?)
  • (normalmente) no es mucho más difícil.

Si lo necesita, puede solicitar el Content_Row_ID primero, luego solicite las filas que necesite, ordenadas por CampaignID , ContentRowID , lo que le daría cada celda (poblada) en orden de izquierda a derecha, línea por línea.

Sal.

Hay un montón de cosas que el hombre moderno cree que SQL debería tener/hacer que simplemente no están ahí. Este es uno, los rangos generados son otro, cierre recursivo, paramétrico ORDER BY , lenguaje de programación estandarizado... la lista continúa. (aunque hay que reconocer que hay un truco para ORDER BY )