Totalizar por data

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 Qui, 17 Nov 2011 3:33 pm

Boa tarde a todos,

Estou com uma dúvida, pois sou novo de PL/SQL

Tenho o seguinte select

Select
valor1,
valor2,
valor3,
datapg,
dataven,
dataorig

from tab_pag

where
datapg = sysdate -11

Eu gostaria de somar os valores 1, 2 e 3 do range de datas que ela trouxer.

Exemplo de resultado que ele traz atualmente:

valor1 valor2 valor3 datapg dataven dataorig
1 2 3 1/11 2/12 2/12
2 3 4 2/11 3/12 4/12
3 4 5 3/11 4/12 5/12

Como eu faço para somar os valores da datapg de 1/11 até 3/11?
Já coloquei um select separado para somar o valor 3, porém como eu faço para somar e apresentar em uma nova coluna o total da coluna valor1, valor2 e valor3?

Obrigado e abraços

William Lucas
wil.lucas

Mensagemem Qui, 17 Nov 2011 4:13 pm

Bem vido ao fórum cara.

Seguinte, se você não precisar ver as datas pode fazer da seguinte maneira:

Código: Selecionar todos
Select sum(valor1),
          sum(valor2),
          sum(valor3)
  from tab_pag
where datapg = sysdate -11


Se precisar ver por data de pagamento, pode fazer:
Código: Selecionar todos
Select sum(valor1),
          sum(valor2),
          sum(valor3),
          datapg
  from tab_pag
where datapg = sysdate -11
group by datapg
Jota
Localização: Blumenau - SC

Jonatas Jaqmam Pereira
Analista Desenvolvedor de Sistemas

Mensagemem Sex, 18 Nov 2011 9:31 am

Seria isso?

Código: Selecionar todos
select valor1,valor2,valor3,datapg,dataven,dataorig
, sum( nvl( valor1, 0 ) + nvl( valor2, 0 ) + nvl( valor3, 0 ) ) over ()
from   tab_pag
where  datapg = sysdate -11
rogenaro
Localização: Londrina - PR

Rafael O. Genaro

Mensagemem Sex, 18 Nov 2011 9:52 am

Bom dia,
Nenhuma das duas opções funcionaram, mas acho que não fui tão claro no select.
Ele esta dessa forma, na verdade

Select
valor1,
valor2,
valor3,
datapg,
dataven,
dataorig,
(select sum (valor3)
from tab_pag
where
datapg = sysdate -11) soma

from tab_pag

where
datapg = sysdate -11


Ele esta trazendo uma coluna de soma, mas apenas do valor3, e o que eu preciso também, é da soma dos campos valor1 e valor 2.

Abraços
wil.lucas

Mensagemem Sex, 18 Nov 2011 9:56 pm

Olá Will,

Desculpe, mas acho que a sua explicação ainda não está suficientemente clara.

Seguindo exatamente à risca o que você está pedindo, a querie deveria então ser a seguinte:

Código: Selecionar todos
SELECT valor1,
       valor2,
       valor3,
       datapg,
       dataven,
       dataorig,
       total.soma1,
       total.soma2,
       total.soma3
  FROM tab_pag,
       (SELECT SUM(valor1) AS SOMA1,
               SUM(valor2) AS SOMA2,
               SUM(valor3) AS SOMA3
          FROM tab_pag
         WHERE datapg = SYSDATE-11) total
WHERE datapg = SYSDATE-11


Tem certeza que deveria ser esta a informação que deseja retornar em sua querie?

Caso não seja, eu recomendo que você coloque o resultado que deseja sair em sua querie, exatamente como você tentou fazer no início desta thread.

Abraços,

Sergio Coutinho
stcoutinho
Localização: Sao Paulo - SP

Mensagemem Seg, 05 Dez 2011 7:07 pm

Olá Sergio,

Segue o resultado que eu desejava...

valor1 valor2 valor3 dtpg dtvenc soma1 soma2 soma3
1 2 3 1/12 30/11 9 12 18
3 4 6 2/12 30/11 9 12 18
5 6 9 3/12 30/11 9 12 18


O where ficaria da seguinte forma

where
dtvenc = 30/11

Abraços
wil.lucas

Mensagemem Seg, 05 Dez 2011 7:17 pm

Will,
Acho que a querie que te passei resolveria este problema.
Dê uma olhada nela. Em caso de dúvidas, poste aquí novamente.
Abraços,
Sergio
stcoutinho
Localização: Sao Paulo - SP



Voltar para PL/SQL

Quem está online

Usuários navegando neste fórum: Google Adsense [Bot] e 15 visitantes