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
  

Mensagemem Seg, 04 Jun 2018 2:32 pm

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,
edson.amorim
Localização: Belo Horizonte - MG

Mensagemem Seg, 04 Jun 2018 3:26 pm

Olá,

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

Código: Selecionar todos
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.

Código: Selecionar todos
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'
DanielNN
Localização: Fortaleza - CE

att,

Daniel N.N.



Voltar para PL/SQL

Quem está online

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