unos resultados no me cuadraban en unas consultas que estaba haciendo y tras hacer varias pruebas y simplificar la consulta al máximo, me da la impresión de que hay un bug cuando en una consulta utilizamos conjuntamente ROLLUP, COUNT(DISTINCT ...) y ORDER BY.
La consulta simplificada, para que cualquiera pueda probarla y ver el supuesto bug, es ésta:
Código:
El resultado que me da, sorprendentemente, es éste:SELECT A, B, COUNT(DISTINCT C) AS C FROM ( SELECT 1 AS A, 3 AS B, 2 AS C FROM DUAL UNION ALL SELECT 1 AS A, 3 AS B, 3 AS C FROM DUAL UNION ALL SELECT 2 AS A, 1 AS B, 2 AS C FROM DUAL UNION ALL SELECT 2 AS A, 2 AS B, 3 AS C FROM DUAL ) GROUP BY ROLLUP(A), B ORDER BY B
Cita:
Es decir, ¡¡no lo ha ordenado por la columna B!!. Es como si hubiese aplicado el order by de manera separada, primero al resultado que daría con el GROUP BY y luego aparte a las 3 líneas debidas al ROLLUP.A B C
2 1 1
2 2 1
1 3 2
null 1 1
null 2 1
null 3 2
2 1 1
2 2 1
1 3 2
null 1 1
null 2 1
null 3 2
Curiosamente si en lugar de COUNT(DISTINCT C) solicitamos SUM(C), entonces sí que lo hace bien, éste sería el resultado:
Cita:
¿Parece un bug en toda regla, no? ¿qué opinais? A B C
2 1 2
null 1 2
2 2 3
null 2 3
1 3 5
null 3 5
2 1 2
null 1 2
2 2 3
null 2 3
1 3 5
null 3 5