Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/06/2008, 09:28
MutenRo
 
Fecha de Ingreso: marzo-2008
Ubicación: Euskadi
Mensajes: 64
Antigüedad: 16 años, 1 mes
Puntos: 0
¿bug en Oracle 10g con ROLLUP y ORDER BY?

Buenas,

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:
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
El resultado que me da, sorprendentemente, es éste:

Cita:
A B C
2 1 1
2 2 1
1 3 2
null 1 1
null 2 1
null 3 2
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.

Curiosamente si en lugar de COUNT(DISTINCT C) solicitamos SUM(C), entonces sí que lo hace bien, éste sería el resultado:

Cita:
A B C
2 1 2
null 1 2
2 2 3
null 2 3
1 3 5
null 3 5
¿Parece un bug en toda regla, no? ¿qué opinais?