Porque podemos tener la información resumida y la información resumida es la que preferentemente nos solicitan los gerentes. A ellos no les suele interesar los detalles de cada venta, por ejemplo, sino los totales vendidos. Una cross-table sirve justamente para eso.

Si nos solicitan las ventas de cada producto en cada día del mes podríamos mostrar esa información usando la cláusula GROUP BY pero tendríamos muchas fechas repetidas, algo como:

Producto 1, fecha 1, total ventas del día 1
Producto 1, fecha 2, total ventas del día 2
Producto 1, fecha 3, total ventas del día 3
Producto 2, fecha 1, total ventas del día 1
Producto 2, fecha 2, total ventas del día 2
Producto 2, fecha 3, total ventas del día 3

etc.

Los nombres de los productos (Producto 1, Producto 2, etc.) se repiten y las fechas (fecha 1, fecha 2, fecha 3, etc.) también se repiten.

Si en la consulta deben mostrarse las ventas de 40 productos durante cada uno de los días del mes entonces tendríamos una consulta con 40 x 30 = 1.200 filas. Y si los productos fueran 500 entonces tendríamos 500 * 30 = 15.000 filas. Una exageración, nadie mira una consulta tan larga.

En cambio, si usamos una cross-table el nombre de cada producto se muestra una sola vez y cada fecha también es mostrada una sola vez. Para el caso anterior tendríamos 40 filas (una por cada producto) y 30 columnas (una para cada fecha del mes). Por lo tanto una cross-table es más parecida a una hoja de cálculo (una planilla Excel)

CROSS6

Captura 1. Si haces clic en la imagen la verás más grande

Como puedes ver en la Captura 1. cada fila representa a un producto (y el nombre de cada producto es mostrado una sola vez) y en cada columna se encuentra el total vendido en ese día (y cada fecha se muestra una sola vez).

Por lo tanto, es muy fácil visualizar las ventas de cada producto en cada uno de los días. Esto es mucho más comprensible que su equivalente usando la cláusula GROUP BY.

Conclusión:

Aunque Firebird no dispone nativamente de la opción de crear una cross-table es demasiado fácil crear una como vimos en este artículo:

https://firebird21.wordpress.com/2013/11/18/usando-una-cross-table/

y debemos aprovecharnos de esta herramienta para que nuestras aplicaciones sean más útiles.

Artículos relacionados:

Usando una cross-table

El índice del blog Firebird21