A cláusula Rollup veio agregar valores ao famoso Group By, possibilitando criar Subtotais das somas já existentes numa seleção com o Group By. Ela ainda destaca o valor do total.
Sua sintaxe é bem simples, vejamos!
SELECT PRODUCT_CODE, SUM(QUANTITY) TOTAL
FROM EXEMPLO
GROUP BY ROLLUP(CUSTOMER_ID, PRODUCT_CODE)
Vejamos, que após a cada grupo ele cria um subtotal dos valores acima, e no final ele gera um total geral.
Agora, vamos melhorar ainda mais a nossa consulta com o uso do Rollup!
SELECT CUSTOMER_ID, DECODE(CUSTOMER_ID, NULL, ‘TOTAL’, ‘SUB_TOTAL’), TOTAL
FROM (
SELECT CUSTOMER_ID, PRODUCT_CODE, SUM(QUANTITY) TOTAL
FROM EXEMPLO
GROUP BY ROLLUP (CUSTOMER_ID,PRODUCT_CODE))
WHERE PRODUCT_CODE IS NULL
Mais uma forma para executarmos a seleção.
SELECT CUSTOMER_ID,
CASE WHEN CUSTOMER_ID IS NULL THEN
‘TOTAL’
WHEN PRODUCT_CODE IS NULL THEN
‘SUB_TOTAL’
ELSE PRODUCT_CODE
END DESCRICAO, TOTAL
FROM (SELECT CUSTOMER_ID, PRODUCT_CODE, SUM(QUANTITY) TOTAL
FROM EXEMPLO
GROUP BY ROLLUP(CUSTOMER_ID, PRODUCT_CODE))
Galera, espero ter ajudado nas suas queries com esse recurso.
Abraços e até a próxima!