none
Agrupar informaçoes RRS feed

  • Pergunta

  •  

     

    Prezados bom dia, estou precisando da ajuda de vcs em relação a SQl abaixo,

    Preciso trazer as informaçoes das colunas PAgar e Receber uma do lado da outra,

    SQL

    SELECT
        'OFICIAL' SISTEMA,
        FLAN.DATAVENCIMENTO,
        SUM(FLAN.VALORORIGINAL - FLAN.VALORDESCONTO)*-1 PAGAR,
        '0' AS  'RECEBER'
       
    FROM
        FLAN
    WHERE
        FLAN.DATAVENCIMENTO >='01-01-2010' AND
        FLAN.DATAVENCIMENTO <='12-31-2050' AND
        FLAN.STATUSLAN = '0' AND
        FLAN.PAGREC = '2' AND
        FLAN.NFOUDUP IN (0, 2)
    GROUP BY
        FLAN.DATAVENCIMENTO
    UNION ALL

    SELECT
        'OFICIAL' SISTEMA,
        FLAN.DATAVENCIMENTO,
        '0' AS 'PAGAR',
        SUM(FLAN.VALORORIGINAL - FLAN.VALORDESCONTO) RECEBER
    FROM
        FLAN
    WHERE
        FLAN.DATAVENCIMENTO >='01-01-2010' AND
        FLAN.DATAVENCIMENTO <='12-31-2050' AND
        FLAN.STATUSLAN = '0' AND
        FLAN.PAGREC = '1' AND
        FLAN.NFOUDUP IN (0, 2)
    GROUP BY
        FLAN.DATAVENCIMENTO     

     Resultado

    base         DT VENCMENTO                    PAGAR        RECEBER

    OFICIAL    2010-12-31 00:00:00.000    -180.0000    0.0000
    OFICIAL    2011-10-16 00:00:00.000    -639.0200    0.0000
    OFICIAL    2011-10-18 00:00:00.000    -182.1100    0.0000
    OFICIAL    2011-10-21 00:00:00.000    -7004.5600    0.0000
    OFICIAL    2011-10-22 00:00:00.000    -3904.2600    0.0000

    OFICIAL    2011-10-19 00:00:00.000    0.0000    308713.1200
    OFICIAL    2011-10-21 00:00:00.000    0.0000    588385.2800

    prezados vejam as duas ultimas linhas

    tenho lancamento a receber e nao a pagar,

    vejam o resultado esperado

    base         DT VENCMENTO                    PAGAR        RECEBER

    OFICIAL    2010-12-31 00:00:00.000    -180.0000    0.0000
    OFICIAL    2011-10-16 00:00:00.000    -639.0200    0.0000
    OFICIAL    2011-10-18 00:00:00.000    -182.1100    0.0000     

    OFICIAL    2011-10-19 00:00:00.000    0.0000    308713.1200
    OFICIAL    2011-10-21 00:00:00.000    -7004.5600    588385.2800
    OFICIAL    2011-10-22 00:00:00.000    -3904.2600    0.0000

    dia 19 entrar na ordem com o lancamento somente a receber pois nesse dia nao tenho a pagar.

    e o valor a receber do dia 21 entrar no a receber do dia 21.

    pessoal caso nao tenho ficado bem explicado favor me avisa, agredeço a ajuda de todos..

     

     

     

     

     

    terça-feira, 18 de outubro de 2011 13:39

Respostas

  • Testa com assim:

    select SISTEMA, DATAVENCIMENTO, SUM(PAGAR) as PAGAR, SUM(RECEBER) as RECEBER
    from (
    SELECT
        'OFICIAL' SISTEMA,
        FLAN.DATAVENCIMENTO,
        SUM(FLAN.VALORORIGINAL - FLAN.VALORDESCONTO)*-1 PAGAR,
        '0' AS  'RECEBER'
       
    FROM
        FLAN
    WHERE
        FLAN.DATAVENCIMENTO >='01-01-2010' AND
        FLAN.DATAVENCIMENTO <='12-31-2050' AND
        FLAN.STATUSLAN = '0' AND
        FLAN.PAGREC = '2' AND
        FLAN.NFOUDUP IN (0, 2)
    GROUP BY
        FLAN.DATAVENCIMENTO
    UNION ALL
    
    SELECT
        'OFICIAL' SISTEMA,
        FLAN.DATAVENCIMENTO,
        '0' AS 'PAGAR',
        SUM(FLAN.VALORORIGINAL - FLAN.VALORDESCONTO) RECEBER
    FROM
        FLAN
    WHERE
        FLAN.DATAVENCIMENTO >='01-01-2010' AND
        FLAN.DATAVENCIMENTO <='12-31-2050' AND
        FLAN.STATUSLAN = '0' AND
        FLAN.PAGREC = '1' AND
        FLAN.NFOUDUP IN (0, 2)
    GROUP BY
        FLAN.DATAVENCIMENTO     
    )x
    GROUP by SISTEMA, DATAVENCIMENTO
    order by SISTEMA, DATAVENCIMENTO
    

     


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Marcado como Resposta Richard Juhasz sexta-feira, 21 de outubro de 2011 18:51
    terça-feira, 18 de outubro de 2011 13:48

Todas as Respostas

  • Testa com assim:

    select SISTEMA, DATAVENCIMENTO, SUM(PAGAR) as PAGAR, SUM(RECEBER) as RECEBER
    from (
    SELECT
        'OFICIAL' SISTEMA,
        FLAN.DATAVENCIMENTO,
        SUM(FLAN.VALORORIGINAL - FLAN.VALORDESCONTO)*-1 PAGAR,
        '0' AS  'RECEBER'
       
    FROM
        FLAN
    WHERE
        FLAN.DATAVENCIMENTO >='01-01-2010' AND
        FLAN.DATAVENCIMENTO <='12-31-2050' AND
        FLAN.STATUSLAN = '0' AND
        FLAN.PAGREC = '2' AND
        FLAN.NFOUDUP IN (0, 2)
    GROUP BY
        FLAN.DATAVENCIMENTO
    UNION ALL
    
    SELECT
        'OFICIAL' SISTEMA,
        FLAN.DATAVENCIMENTO,
        '0' AS 'PAGAR',
        SUM(FLAN.VALORORIGINAL - FLAN.VALORDESCONTO) RECEBER
    FROM
        FLAN
    WHERE
        FLAN.DATAVENCIMENTO >='01-01-2010' AND
        FLAN.DATAVENCIMENTO <='12-31-2050' AND
        FLAN.STATUSLAN = '0' AND
        FLAN.PAGREC = '1' AND
        FLAN.NFOUDUP IN (0, 2)
    GROUP BY
        FLAN.DATAVENCIMENTO     
    )x
    GROUP by SISTEMA, DATAVENCIMENTO
    order by SISTEMA, DATAVENCIMENTO
    

     


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Marcado como Resposta Richard Juhasz sexta-feira, 21 de outubro de 2011 18:51
    terça-feira, 18 de outubro de 2011 13:48
  • Alias acho que da para fazer em uma única query usando case...
    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    terça-feira, 18 de outubro de 2011 13:49
  • Valeu MArcelo Obrigado pela ajuda
    domingo, 23 de outubro de 2011 13:20