Hola,
gracias por los enlaces, matanga, pero no tengo acceso a http://metalink.oracle.com (parece que hace falta un código para darse de alta).
De todas maneras lo he consultado en askTom.com y aquí teneis (al final de la página) lo que me ha contestado: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:74320098178823
En resumidas cuentas, parece que en la versión 11g está arreglado (no lo he probado) y para la 10g se puede obtener el resultado correcto de esta manera:
Código:
WITH DATA AS
(SELECT /*+ materialize */ 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, 3 AS B, 3 AS C FROM DUAL
)
GROUP BY ROLLUP(A), B
ORDER BY B)
SELECT * FROM DATA ORDER BY B;
Saludos.