Total do Quadrimestre

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Srs,
Estou fazendo um programa de carga de indicadores da empresa, onde preciso montar queries dinamicas de várias bases e calcular valores acumulados por período(Ano, mês) e etc. Tudo tranquilo. Aí me apareceu o período QUADRIMESTRAL. Tenho uma solução, mas não gosto muito dela.
Faço um decode e informo na mão a referência de cada mês ao quadrimestre correspondente:

Selecionar tudo

DECODE(extract(MONTH FROM araa.apply_date)
,1,1,2,1,3,1,4,1
,5,2,6,2,7,2,8,2
,9,3,10,3,11,3,12,3
,0) quadri
Depois faço uma soma dos valores agrupados por esse "quadri".
Alguém teria um solução menos "MANUAL"???
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Acho que não tem saída...
A única coisa que tem é o formato "Q", que é QUARTER (ou seja, trimestral).

Veja:
http://ss64.com/ora/syntax-fmt.html

Mas tem como criar uma formula pra isso:

Selecionar tudo

ROUND( (EXTRACT(MONTH FROM a.data)+1)/4)
Veja:

Selecionar tudo

SQL> WITH a AS
  2    (SELECT ADD_MONTHS(TRUNC(SYSDATE,'YY'),LEVEL-1) data
  3    FROM dual CONNECT BY LEVEL <= 24
  4    )
  5  SELECT
  6     data
  7  , EXTRACT(MONTH FROM a.data) mês
  8  , ROUND( (EXTRACT(MONTH FROM a.data)+1)/4) quadr   --  <-- aqui está a formula
  9  FROM a
 10  /
 
DATA               mês      QUADR
----------- ---------- ----------
1/1/2012             1          1
1/2/2012             2          1
1/3/2012             3          1
1/4/2012             4          1
1/5/2012             5          2
1/6/2012             6          2
1/7/2012             7          2
1/8/2012             8          2
1/9/2012             9          3
1/10/2012           10          3
1/11/2012           11          3
1/12/2012           12          3
1/1/2013             1          1
1/2/2013             2          1
1/3/2013             3          1
1/4/2013             4          1
1/5/2013             5          2
1/6/2013             6          2
1/7/2013             7          2
1/8/2013             8          2
1/9/2013             9          3
1/10/2013           10          3
1/11/2013           11          3
1/12/2013           12          3
 
24 rows selected
 
SQL> 
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Valeu Thomas,
ficou bem melhor com essa "função" no lugar do decode.
Responder
  • Informação
  • Quem está online

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