Jump to content
Sign in to follow this  
ISREL LOUIS RAMOS

Trazer dados mensais

Recommended Posts


Fiz esse select para me trazer esses dados diariamente, agora penso em trazer esses mesmos dados em valores mensais.

Pensei em concatenar os dados da coluna dt_movimento MES/ANO, colocando group by deles para me trazer os valores.


Só que a minha idéia é que só traga o mês atual, ou seja mesmo em concatenando os valores de JAN a DEZ, só me interessa os valores do mês atual.


A opção de dar where e colocar a data beetween entre começo e fim do mês, não me agrada, pois a cada ano eu teria que mudar esse select.


Alguém poderia me ajudar com uma idéia e me ajusando a construir essa parte no select?


Obs: banco de dados oracle, usando plsql



Select SUM(FORNEC) AS CANA_FORNEC ,

SUM(CARGAS_FORNEC) AS CARGAS_FORNEC ,
SUM(PROPRIA) AS CANA_PROPRIA ,
SUM(CARGAS_PROPRIA) AS CARGAS_PROPRIA ,
MAX(dt_movimento) AS DT_MOVIMENTO


from


(
select
CASE WHEN TPP.CD_TP_PROPR = 4 THEN SUM(APT.QT_LIQUIDO) END AS FORNEC ,
CASE WHEN TPP.CD_TP_PROPR = 4 THEN COUNT(*) END AS CARGAS_FORNEC ,
CASE WHEN TPP.CD_TP_PROPR <> 4 THEN SUM(APT.QT_LIQUIDO) END AS PROPRIA ,
CASE WHEN TPP.CD_TP_PROPR <> 4 THEN COUNT(*) END AS CARGAS_PROPRIA ,
APT.dt_movimento
from PIMSPRD.APT_CARGAS APT, PIMSPRD.UPNIVEL3 UP3, PIMSPRD.TIPOPROPRI TPP
where APT.DT_MOVIMENTO = TO_DATE(Sysdate,'DD/MM/YYYY')
And UP3.CD_SAFRA = APT.CD_SAFRA
and UP3.CD_UPNIVEL1 = APT.CD_UPNIVEL1
and UP3.CD_UPNIVEL2 = APT.CD_UPNIVEL2
and UP3.CD_UPNIVEL3 = APT.CD_UPNIVEL3
and TPP.CD_TP_PROPR = APT.CD_TP_PROPR
and ((APT.CD_UNID_IND = 1))
group by TPP.CD_TP_PROPR, TPP.DA_TP_PROPR,APT.dt_movimento
)

Share this post


Link to post
Share on other sites

para filtrar o mesmo ano/mês

 where to_char(APT.DT_MOVIMENTO,'yyyymm') = TO_char(Sysdate,'yyyymm')

Podendo fazer por Group by

Share this post


Link to post
Share on other sites

para filtrar o mesmo ano/mês

 where to_char(APT.DT_MOVIMENTO,'yyyymm') = TO_char(Sysdate,'yyyymm')

Podendo fazer por Group by

 

Desculpa Motta,

 

mas eu não entendi muito bem como fazer, utilizo o concatenar?

e o meu campo dt_movimento é date.

 

Colocando a sua sugestão fiz da seguinte forma, mas os valores não coincidem:

 

Select SUM(FORNEC) AS CANA_FORNEC ,
SUM(CARGAS_FORNEC) AS CARGAS_FORNEC ,
SUM(PROPRIA) AS CANA_PROPRIA ,
SUM(CARGAS_PROPRIA) AS CARGAS_PROPRIA ,
MAX(dt_movimento) AS DT_MOVIMENTO
from
(
select
CASE WHEN TPP.CD_TP_PROPR = 4 THEN SUM(APT.QT_LIQUIDO) END AS FORNEC ,
CASE WHEN TPP.CD_TP_PROPR = 4 THEN COUNT(*) END AS CARGAS_FORNEC ,
CASE WHEN TPP.CD_TP_PROPR <> 4 THEN SUM(APT.QT_LIQUIDO) END AS PROPRIA ,
CASE WHEN TPP.CD_TP_PROPR <> 4 THEN COUNT(*) END AS CARGAS_PROPRIA ,
APT.dt_movimento
from PIMSPRD.APT_CARGAS APT, PIMSPRD.UPNIVEL3 UP3, PIMSPRD.TIPOPROPRI TPP
where to_char(APT.DT_MOVIMENTO,'mmyyyy') = TO_char(Sysdate,'mmyyyy')
And UP3.CD_SAFRA = APT.CD_SAFRA
and UP3.CD_UPNIVEL1 = APT.CD_UPNIVEL1
and UP3.CD_UPNIVEL2 = APT.CD_UPNIVEL2
and UP3.CD_UPNIVEL3 = APT.CD_UPNIVEL3
and TPP.CD_TP_PROPR = APT.CD_TP_PROPR
and ((APT.CD_UNID_IND = 1))
group by TPP.CD_TP_PROPR, TPP.DA_TP_PROPR,APT.dt_movimento
)

Share this post


Link to post
Share on other sites
Colocando a sua sugestão fiz da seguinte forma, mas os valores não coincidem:

 

 

o que deu de errado ?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.