ISREL LOUIS RAMOS 0 Denunciar post Postado Julho 13, 2016 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 ) Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 13, 2016 para filtrar o mesmo ano/mês where to_char(APT.DT_MOVIMENTO,'yyyymm') = TO_char(Sysdate,'yyyymm') Podendo fazer por Group by Compartilhar este post Link para o post Compartilhar em outros sites
ISREL LOUIS RAMOS 0 Denunciar post Postado Julho 13, 2016 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 ) Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 13, 2016 Colocando a sua sugestão fiz da seguinte forma, mas os valores não coincidem: o que deu de errado ? Compartilhar este post Link para o post Compartilhar em outros sites
ISREL LOUIS RAMOS 0 Denunciar post Postado Julho 20, 2016 Motta, Eu estava fazendo bobagem, utilizando a sua dica deu certo. Obrigado, novamente. Compartilhar este post Link para o post Compartilhar em outros sites