none
duas condiçoes RRS feed

  • Pergunta

  • Prezados estou com uma problema que nao cosegui resolver ate o momento..

    na Sql Abaixo

    SELECT

     

    CASE WHEN (B.DATABAIXA >= '2010-01-01' AND B.DATABAIXA<= '2010-01-31')

    THEN

     

    ((B.VALORBAIXADO))+ ISNULL (F.VALOR,0) END

     

     

     

     

    FROM FLAN B

    LEFT

     

    JOIN FTRBLAN AS F ON F.CODCOLIGADA = B.CODCOLIGADA AND F.IDLAN = B.IDLAN

    WHERE

     

    B.CODCFO IN ('000438','000757','001467')

    AND

     

    B.TIPOCONTABILLAN='2'

    AND

     

    ((B.DATABAIXA >= '2010-01-01' AND B.DATABAIXA <= '2010-01-31') OR

    (

     

    B.DATABAIXA >= '2010-01-01' AND B.DATABAIXA <= '2010-01-31'))

    Me retorna um determnado valor que esta correto, porem vem o maior problema, preciso que somente para esses tres fornecedores WHERE B.CODCFO IN ('000438','000757','001467'), o valor seja somente B.VALORBAIXADO,porem que seja somente nos periodos de '2010-01-01' a '2010-01-31', depois desse data ele volte a buscar o valor ((B.VALORBAIXADO))+ ISNULL (F.VALOR,0),, complicado demias..

    conto com ajuda de todos vcs

    muito obrigado

    quarta-feira, 2 de março de 2011 18:46

Respostas

  • Ronnie,

    Se entendi bem os valores que estão sendo retornados estão fora da faixa de valores?

    Você já tentou utilizar o operador Between?

    BETWEEN (B.DATABAIXA >= '2010-01-01' AND B.DATABAIXA <= '2010-01-31')


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    • Marcado como Resposta Ronnie Von quinta-feira, 3 de março de 2011 16:47
    quarta-feira, 2 de março de 2011 18:58
  • Ronnie

    Teste o script abaixo...

    SELECT
      CASE WHEN (B.DATABAIXA >= '2010-01-01' AND B.DATABAIXA<= '2010-01-31') and B.CODCFO IN ('000438','000757','001467')
      THEN 
        B.VALORBAIXADO
      Else
        B.VALORBAIXADO+ ISNULL (F.VALOR,0) 
      END 
    FROM FLAN B
    LEFT JOIN FTRBLAN AS F ON F.CODCOLIGADA = B.CODCOLIGADA AND F.IDLAN = B.IDLAN
    WHERE B.TIPOCONTABILLAN='2'
    

    Att.
    Marcelo Fernandes


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

    • Marcado como Resposta Ronnie Von quinta-feira, 3 de março de 2011 16:46
    quarta-feira, 2 de março de 2011 19:49

Todas as Respostas

  • Ronnie,

    Se entendi bem os valores que estão sendo retornados estão fora da faixa de valores?

    Você já tentou utilizar o operador Between?

    BETWEEN (B.DATABAIXA >= '2010-01-01' AND B.DATABAIXA <= '2010-01-31')


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    • Marcado como Resposta Ronnie Von quinta-feira, 3 de março de 2011 16:47
    quarta-feira, 2 de março de 2011 18:58
  • Junior Seguinte, para esses fornecedores B.CODCFO IN ('000438','000757','001467')  , no periodo de 2010-01-01 a 2010-01-31 tem que buscar o valor B.VALORBAIXADO , depois dessa data teria que buscar essa valor 

    ((B.VALORBAIXADO))+ ISNULL (F.VALOR,0) END

    ficou melhor assim

    quarta-feira, 2 de março de 2011 19:02
  • Ronnie

    Teste o script abaixo...

    SELECT
      CASE WHEN (B.DATABAIXA >= '2010-01-01' AND B.DATABAIXA<= '2010-01-31') and B.CODCFO IN ('000438','000757','001467')
      THEN 
        B.VALORBAIXADO
      Else
        B.VALORBAIXADO+ ISNULL (F.VALOR,0) 
      END 
    FROM FLAN B
    LEFT JOIN FTRBLAN AS F ON F.CODCOLIGADA = B.CODCOLIGADA AND F.IDLAN = B.IDLAN
    WHERE B.TIPOCONTABILLAN='2'
    

    Att.
    Marcelo Fernandes


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

    • Marcado como Resposta Ronnie Von quinta-feira, 3 de março de 2011 16:46
    quarta-feira, 2 de março de 2011 19:49
  • Valeu marcelo era exatamente isso que esta precisando. obrigado
    quinta-feira, 3 de março de 2011 16:47