none
Dúvida com Resultado de Uma Coluna RRS feed

  • Pergunta

  • Olá pessoal, tenho uma consulta com o pedaço abaixo:

    SELECT DISTINCT
    F.IDLAN,
    F.IDFAT,
    VALIDA = CASE WHEN F.IDFAT IS NULL AND F.IDMOV IS NULL THEN 0 ELSE 1 END,

    Tenho uma coluna que chama "PROVISAO", e preciso acrescentar o resultado dela como sendo mais um validador acima.

    Minha coluna "VALIDA" ficaria assim:
    VALIDA = CASE WHEN F.IDFAT IS NULL AND F.IDMOV IS NULL AND "RESULTADO COLUNA PROVISAO"= 0 THEN 0 ELSE 1 END,

    Alguém tem idéia como faço isso?

    Abraço a todos!

    domingo, 3 de fevereiro de 2008 21:45

Todas as Respostas

  •  

    Olá Michel,

     

    Não entendi exatamente o seu problema, principalmente a parte do "PROVISAO".

     

    O que entendi, é preciso fazer alguma validação nessa coluna baseado na validação do "VALIDA". Seria isso??

     

    Se for isso, a idéia que dou é fazer uma consulta baseada numa subquery, algo nesse sentido:

     

    Code Snippet

    SELECT IDLAN,

    IDFAT,

    PROVISAO = CASE WHEN VALIDA = 1 THEN 'XYZ' ELSE 'ABC'

    FROM (

    SELECT DISTINCT

    IDLAN,

    IDFAT,

    VALIDA = CASE WHEN IDFAT IS NULL AND IDMOV IS NULL THEN 0 ELSE 1 END

    FROM SuaTabela

    ) AS Tbl

     

     

     

    Se não for nada disso, retorne explicando um pouco melhor sua necessidade.

     

     

    Abraço!!

    domingo, 3 de fevereiro de 2008 23:23
  • Alexandre, primeiramente obrigado pela ajuda.
    Tentei resumir o meu problema mas vou tentar te explicar o que preciso da forma real.


    Imagine a seguinte situação...
    A coluna PROVISAO foi criada por mim e ela retorna valores maiores que zero ou zero conforme resultado abaixo:

    Ela foi criada da seguinte forma:

     

    Code Snippet

    PROVISÃO =  CASE WHEN F.IDLAN =(SELECT TOP 1 FLAN.IDLAN 
      FROM FLAN (NOLOCK) WHERE FLAN.IDMOV = F.IDMOV
      AND FLAN.CODCOLIGADA=@CODCOLIGADA
      ORDER BY 1 )THEN (SELECT TOP 1 CAST(TMOV.VALORLIQUIDO AS FLOAT)
      FROM TMOV (NOLOCK)
      WHERE TMOV.IDMOV = T.IDMOV
      AND TMOV.CODCOLIGADA=@CODCOLIGADA
      ORDER BY 1 DESC )ELSE '' END,

     

     

     

    RESULTADO:

    PROVISAO

    415,8
    402,6
    405,9
    409,2
    409,2
    402,6
    0

     

    Já minha coluna PAGAMENTO só pode trazer valor se as condições forem seguidas:
    1)  campo F.IDFAT >0;
    2)  campo F.IDMOV IS NULL
    3)  campo F.DATABAIXA <= 31/12/2007
    3)  o RESULTADO da minha coluna PROVISAO for igual a ZERO.

     

    Atualmente minha coluna PAGAMENTO está assim:

     

    Code Snippet
    PAGAMENTO = CASE WHEN F.DATABAIXA >= @DATAFINAL THEN 0
      ELSE F.VALORBAIXADO - F.VALORJUROS END,

     

     


    O que pensei em fazer foi alterar minha coluna PAGAMENTO conforme abaixo:

     

    Code Snippet
    PAGAMENTO =CASE WHEN F.IDFAT> 0
      AND F.IDMOV IS NULL
      AND F.DATABAIXA>=@DATAFINAL
      AND PROVISAO = 0
      THEN F.VALORBAIXADO-F.VALORJUROS
      ELSE 0 END,

     

     


    Só que ao fazer isso ocorre o seguinte erro:

    Msg 207, Level 16, State 1, Line 45
    Invalid column name 'PROVISAO'.

     

    O que preciso fazer é isso, ao invés de ter o resultado de um campo como validador preciso ter o resultado de uma coluna.

    Abraço.
    MicheL Vilela

    segunda-feira, 4 de fevereiro de 2008 03:34
  •  

    Michel,

     

    Pelo que entendi, você já está com a solução pronta, apenas está acontecendo um erro.

     

    Bom, verifique exatamente o nome da coluna que você criou, fazendo o seguinte:

     

    sp_help NomeDaTabela

     

     

    Assim vai aparecer o nome da tabela e suas colunas.

     

    Pode ter ocorrido de você ter colocado "SOLUÇÃO", ou algo parecido, então o SQL pode não encontrar a coluna.

     

    Verifique isso e retorne.

     

     

     

    Abraço

    terça-feira, 5 de fevereiro de 2008 03:59