Selecionando valor de coluna de acordo com o valor de outra coluna no GROUP BY (Oracle)

Categoria: Oracle
Publicado em 19 de Abril de 2013

Há casos em que num GROUP BY, queremos selecionar o valor de uma coluna de acordo com o valor de outra.

Por exemplo. Supondo que temos uma tabela TABELA_ESTADO_AREA que relacione o estado e seus respectivos números de DDD. O estado de São Paulo, por exemplo, possui os DDDs de número 11 ao 19.

Queremos agrupar por estado e mostrar o DDD de maior valor. O seguinte código pode ser usado:

1
2
3
4
5
6
7
8
9
SELECT 
   ESTADO,
   MAX(DDD) KEEP (DENSE_RANK FIRST ORDER BY DDD DESC)
FROM 
   TABELA_ESTADO_AREA
GROUP BY
   ESTADO
ORDER BY
   ESTADO;

Se quiséssemos mostrar o DDD de menor valor, bastaria remover o DESC do ORDER BY (dentro de KEEP).



 

Copyright © Fernando Hidemi Uchiyama 2010 - Todos os direitos reservados