Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Eduardo-V-A

Erro ao calcular select com case

Recommended Posts

--Dentro da select abaixo gerei dois valores para o campo taxa, porem ao tentar calcular o mesmo no campo tx_adm e liquido

-- Recebo a msg de erro abaixo falando que a coluna 'taxa' e 'tx_adm' não existe. como eu poderia contornar essa situação uma vez que

-- Não tenho nenhuma amarração dentro do banco que me permita trazer esses valores diretamente de colunas, ou seja tem que

-- ser na base do case ou outra parecida, o erro segue abaixo, se puderem me ajudar obrigado

 

 

SELECT
  A.EMISSAO,B.VENCIMENTO_REAL,A.DESC_CONDICAO_PGTO,A.NF,A.SERIE_NF,A.RAZAO_SOCIAL
  ,CAST(A.VALOR_TOTAL as numeric (14,2))AS VALOR_TOTAL
  ,CAST(CASE A.DESC_CONDICAO_PGTO WHEN 'CARTÃO BNDES VISA 31 DIAS' THEN 2.50 
                             WHEN 'CARTAO BNDS MASTER 30 DIAS' THEN 2.55 END as numeric(14,2))AS TAXA
  ,CAST(VALOR_TOTAL*TAXA/100 AS numeric(14,2))AS TX_ADM
  ,CAST(VALOR_TOTAL-TX_ADM AS numeric(14,2))AS LIQUIDO                            
FROM
  W_IMPRESSAO_NF A
  ,W_CTB_A_RECEBER_PARCELA B
  ,ADMINISTRADORAS_CARTAO D
WHERE A.CONDICAO_PGTO in ('72','73','52','62','122')
 AND A.FILIAL = 'FULANO DE TAL'
 AND B.VENCIMENTO_REAL BETWEEN '2011-06-01' AND '2011-08-31'
 AND A.NF = B.FATURA
 AND A.SERIE_NF = B.SERIE
GROUP BY A.EMISSAO,B.VENCIMENTO_REAL,A.DESC_CONDICAO_PGTO,A.NF,A.SERIE_NF,A.RAZAO_SOCIAL,A.VALOR_TOTAL,B.VENCIMENTO
ORDER BY A.NF,A.SERIE_NF,A.RAZAO_SOCIAL,A.VALOR_TOTAL,B.VENCIMENTO,A.EMISSAO,A.DESC_CONDICAO_PGTO

 

--Invalid column name 'TAXA'.

--Invalid column name 'TX_ADM'.

-- ELE NÃO CHEGA A COMPILAR MAS ACREDITO QUE VAI DAR ERRO TB NO 'LIQUIDO'

Compartilhar este post


Link para o post
Compartilhar em outros sites

--Obrigado pela dica , realmente não vou grudar nenhum campo com outro para usar o CAST

--culpa do nosso amigo CTRL+C ... CTRL+V, mas continuo com a mesma situação dentro do select

-- será que teria que declarar essas colunas que montei em algum lugar? criar alguma tabela virtual? o que pode ser?

 

SELECT
  A.EMISSAO,B.VENCIMENTO_REAL,A.DESC_CONDICAO_PGTO,A.NF,A.SERIE_NF,A.RAZAO_SOCIAL
  ,A.VALOR_TOTAL
  ,CASE A.DESC_CONDICAO_PGTO WHEN 'CARTÃO BNDES VISA 31 DIAS' THEN 2.50 
                             WHEN 'CARTAO BNDS MASTER 30 DIAS' THEN 2.55 END AS TAXA
  ,(A.VALOR_TOTAL*TAXA/100)AS TX_ADM
  ,(VALOR_TOTAL-TX_ADM) AS LIQUIDO                            
FROM
  W_IMPRESSAO_NF A
  ,W_CTB_A_RECEBER_PARCELA B
WHERE A.CONDICAO_PGTO in ('72','73','52','62','122')
 AND A.FILIAL = 'FULANO DE TAL'
 AND B.VENCIMENTO_REAL BETWEEN '2011-06-01' AND '2011-08-31'
 AND A.NF = B.FATURA
 AND A.SERIE_NF = B.SERIE
GROUP BY A.EMISSAO,B.VENCIMENTO_REAL,A.DESC_CONDICAO_PGTO,A.NF,A.SERIE_NF,A.RAZAO_SOCIAL,A.VALOR_TOTAL,B.VENCIMENTO
ORDER BY A.NF,A.SERIE_NF,A.RAZAO_SOCIAL,A.VALOR_TOTAL,B.VENCIMENTO,A.EMISSAO,A.DESC_CONDICAO_PGTO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eduardo-V-A,

você esta utilizando para calculo o alias???

Se sim, esta funcao funciona somente para > SQL2008.

 

Qual a sua versão em questão?

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.