greatest ou opção parecida

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
edson.amorim
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 135
Registrado em: Qui, 04 Out 2007 3:36 pm
Localização: Belo Horizonte - MG

Prezado colega;

preciso num select, agrupar registros por ano em 3 grupos: anos ate 2010, de 2011 até 2015 e de 2016 até o momento. Pensei eum usar o greatest() mas só consegui usar uma vez, por exemplo: greatest to-char(meucampo, 'yyyy', 2010) este campo é data aí ele inclui a coluna com o valor 2010 para todos os registros cuja data é até 2010. mas não consigo fazer para os outros 2 grupos que são de 2011 a 2015 e de 2016 em diante. Espero contar com sua ajuda ...

Obrigado,
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Olá,

você pode adicionar um campo e fazer um case e tratar depois.

Selecionar tudo

select ...
case when my_date < '01/01/2011' then
2010
when my_date between '01/01/2011' and '31/12/2015' then
2015
else
2016
end my_sub_group
from .....
where..... ;
Outra solução (provavelmente menos eficiente) seria fazer 3 consultas unidas por UNION ALL.

Selecionar tudo

Select ...... , 2010 sub_group from ..... where .... my_date < '01/01/2011' 
UNION ALL
Select ...... , 2015 sub_group from ..... where .... my_date between '01/01/2011' and '31/12/2015'
UNON ALL
Select ...... , 2010 sub_group from ..... where .... my_date > '01/01/2016' 
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes