none
Condição no Where RRS feed

  • Pergunta

  • Prezados boa tarde!

    tenho a SQL abaixo que me retorna vários lançamentos porem para 2 contas eu preciso que busque somente a condição do case, com os CPF informados.

                                 

         CASE 

            WHEN FBRAT.CODNATFINANCEIRA  IN ('4.1.006','4.1.009') 

            AND FCFO.CGCCFO IN ('222.555.888-11','555.555.55-151','111.014.766-55','555.55.455-99') THEN 'Diretoria' 

     ELSE ' Verificar'  END  'Class_Gerencial',

    Nome Fornecedor Valor     Codigo
    Diretoria Diretoria 1 567.200     4.1.006
    Diretoria Diretoria 2 514.500     4.1.006
    Diretoria Diretoria 3 2.817.800     4.1.006
    Diretoria Diretoria 4 126.400     4.1.009
     Verificar JOÃO 19.013.500     4.1.006
     Verificar PEDRO    18.963.500      4.1.006
     Verificar LUNA 18.955.000    4.1.006
     Verificar JUTPTER 19.266.200    4.1.009
    gerencia  Claudio 222   2.1.001
    Resultado esperado
    Somente aparecer as informações do CASE para os CPF e as contas informadas
    Diretoria Diretoria 1 567.200   4.1.006
    Diretoria Diretoria 2 514.500   4.1.006
    Diretoria Diretoria 3 2.817.800   4.1.006
    Diretoria Diretoria 4 126.400   4.1.009
    gerencia  Claudio 222   2.1.001

     

    select 
         CASE 
             WHEN FBRAT.CODNATFINANCEIRA  IN ('4.1.006','4.1.009') 
             AND FCFO.CGCCFO IN ('222.555.888-11','555.555.55-151','111.014.766-55','555.55.455-99') THEN 'Diretoria' 
      ELSE ' Verificar'  END  'Class_Gerencial',
    FBRAT.VALOR                AS 'VLR RATEIO',
    FBRAT.CODNATFINANCEIRA     AS 'CODIGO NATUREZA'

    from FLAN (nolock)
    inner join FCFO (nolock)
    ON(flan.CODCFO = fcfo.CODCFO
    and fcfo.CODCOLIGADA = 0)
    inner join GCOLIGADA (nolock)
    ON(flan.CODCOLIGADA = GCOLIGADA.CODCOLIGADA)
    inner join GFILIAL (nolock)
    ON(flan.CODCOLIGADA = GFILIAL.CODCOLIGADA
    and flan.CODFILIAL = GFILIAL.CODFILIAL)
    LEFT JOIN FTDO               AS FD     (NOLOCK)ON FD.CODCOLIGADA     = FLAN.CODCOLIGADA AND FD.CODTDO = FLAN.CODTDO
    LEFT JOIN FLANBAIXA          AS FB     (NOLOCK)ON FB.CODCOLIGADA     = FLAN.CODCOLIGADA AND FB.IDLAN = FLAN.IDLAN
    LEFT JOIN FTB1               AS FT     (NOLOCK)ON FT.CODCOLIGADA     = FB.CODCOLIGADA AND FT.CODTB1FLX = FB.CODTB1FLX
    LEFT JOIN FLANBAIXARATCCU    AS FBRAT  (NOLOCK)ON FBRAT.CODCOLIGADA  = FB.CODCOLIGADA AND FBRAT.IDLAN = FB.IDLAN AND FBRAT.IDBAIXA = FB.IDBAIXA
    LEFT JOIN GCCUSTO            AS GC     (NOLOCK)ON GC.CODCOLIGADA     = FBRAT.CODCOLIGADA AND GC.CODCCUSTO = FBRAT.CODCCUSTO
    LEFT JOIN TTBORCAMENTO       AS FINORC (NOLOCK)ON FINORC.CODCOLIGADA = FBRAT.CODCOLNATFINANCEIRA AND FINORC.CODTBORCAMENTO = FBRAT.CODNATFINANCEIRA
    LEFT JOIN MPRJ               AS P      (NOLOCK)ON P.CODCOLIGADA      = FBRAT.CODCOLIGADA AND P.IDPRJ = FBRAT.IDPRJ
    LEFT JOIN MTRF               AS T      (NOLOCK)ON T.CODCOLIGADA      = FBRAT.CODCOLIGADA AND T.IDPRJ = FBRAT.IDPRJ AND T.IDTRF = FBRAT.IDTRF
    LEFT join FCXA               AS FCXA   (NOLOCK)ON (FB.CODCOLCXA = FCXA.CODCOLIGADA and FB.CODCXA = FCXA.CODCXA)
            LEFT JOIN FXCX               AS FX     (NOLOCK)ON FX.CODCOLIGADA     = FB.CODCOLIGADA AND FX.IDXCX = FB.IDXCX

    where flan.PAGREC = 2
    AND flan.statuslan IN ('1','3','4','5')
    and FB.CODCXA IN  ('0003','0124','0074','0077','0079','0081','0080','0076','0168','0156','0083','0118'
    ,'0399','0158','0126','0122','0129','0180','0178','0177','0180','0401','0400','0398','0402')

    AND FBRAT.CODNATFINANCEIRA NOT IN ('1.3.004','1.3.006','8.1.001','4.1.002','4.1.004','4.1.010','9.1.001','1.3.009')
    AND FD.CODTDO <> '038'
    AND flan.DATABAIXA >= '01-01-2019'
    AND  FX.DATACOMPENSACAO IS NOT NULL

    obrigado 


    • Movido José Diz sexta-feira, 19 de julho de 2019 17:04
    quarta-feira, 12 de junho de 2019 20:06

Respostas

  • Boa tarde,

    Não sei se entendi corretamente mas se você quer que a consulta retorne somente as linhas que entram na primeira condição do Case então experimente trocar o trecho abaixo do Where:

    AND FBRAT.CODNATFINANCEIRA NOT IN ('1.3.004','1.3.006','8.1.001','4.1.002','4.1.004','4.1.010','9.1.001','1.3.009')
    

    pelas mesmas condições do Case, que no seu exemplo seriam:

    AND FBRAT.CODNATFINANCEIRA IN ('4.1.006','4.1.009') 
    AND FCFO.CGCCFO IN ('222.555.888-11','555.555.55-151','111.014.766-55','555.55.455-99')

    Espero que ajude

     

    Assinatura: http://www.imoveisemexposicao.com.br

    • Sugerido como Resposta Junior Galvão - MVPMVP quarta-feira, 19 de junho de 2019 11:00
    • Não Sugerido como Resposta José Diz sexta-feira, 19 de julho de 2019 17:05
    • Marcado como Resposta José Diz sexta-feira, 19 de julho de 2019 17:05
    quarta-feira, 12 de junho de 2019 20:37

Todas as Respostas

  • Boa tarde,

    Não sei se entendi corretamente mas se você quer que a consulta retorne somente as linhas que entram na primeira condição do Case então experimente trocar o trecho abaixo do Where:

    AND FBRAT.CODNATFINANCEIRA NOT IN ('1.3.004','1.3.006','8.1.001','4.1.002','4.1.004','4.1.010','9.1.001','1.3.009')
    

    pelas mesmas condições do Case, que no seu exemplo seriam:

    AND FBRAT.CODNATFINANCEIRA IN ('4.1.006','4.1.009') 
    AND FCFO.CGCCFO IN ('222.555.888-11','555.555.55-151','111.014.766-55','555.55.455-99')

    Espero que ajude

     

    Assinatura: http://www.imoveisemexposicao.com.br

    • Sugerido como Resposta Junior Galvão - MVPMVP quarta-feira, 19 de junho de 2019 11:00
    • Não Sugerido como Resposta José Diz sexta-feira, 19 de julho de 2019 17:05
    • Marcado como Resposta José Diz sexta-feira, 19 de julho de 2019 17:05
    quarta-feira, 12 de junho de 2019 20:37
  • Ronnie Von

    esse codigo nao coincide com o resultado

    cadê o codigo correto?


    • Editado DBA.NOTURNO quinta-feira, 13 de junho de 2019 18:16
    quinta-feira, 13 de junho de 2019 18:16