Inquiridor
Pessoal erro na estrutura de SQL

Pergunta
-
Olá pessoal,
Então estou com erro em uma estrutura de SQL, porém não consigo visualizar, outra coisa é que mesmo as competencias estejam entre colchetes o ssms me ocasiona erros do tipo
Msg 207, Level 16, State 1, Line 24
Invalid column name 'jan/21'.E por enquanto está me acusando esse erro
WITH CTE_TOTAL_USUARIOS AS(
SELECT CORR.CORR_DESCRICAO2,USUA.USUA_CODIGO,SUM(FCI.CONT_VALOR_LIQUIDO) AS CONT_VALOR_LIQUIDO
FROM DW.DBO.FATO_CONTRATOS_I FCI
INNER JOIN DW.DBO.DIME_CORRESPONDENTES CORR
ON FCI.CORR_ID2 = CORR.CORR_ID
INNER JOIN DW.DBO.DIME_USUARIOS USUA
ON FCI.ATENDENTE_ID = USUA.USUA_ID
WHERE CORR.CORR_CODIGO LIKE '003001%'
AND FCI.CONT_DATA_EMISSAO BETWEEN '2020-07-01' AND '2020-09-30'
AND FCI.CONT_SITUACAO_PRODUCAO IN (1,3)
GROUP BY CORR.CORR_DESCRICAO2
,USUA.USUA_CODIGO
)
SELECT
A.CORR_DESCRICAO2
,A.USUA_CODIGO
,NT.TABELA
,NT.TIPO_DE_OPERACAO
,NT.PLANO
,IIF( SRC_TOTAL.CONT_VALOR_LIQUIDO = 0, 0,A.CONT_VALOR_LIQUIDO/SRC_TOTAL.CONT_VALOR_LIQUIDO)CONT_PERCENTUAL_USUARIO
, [jan/21] * IIF( SRC_TOTAL.CONT_VALOR_LIQUIDO = 0, 0,A.CONT_VALOR_LIQUIDO/SRC_TOTAL.CONT_VALOR_LIQUIDO) JAN_21
, [fev/21] * IIF( SRC_TOTAL.CONT_VALOR_LIQUIDO = 0, 0,A.CONT_VALOR_LIQUIDO/SRC_TOTAL.CONT_VALOR_LIQUIDO) FEV_21
, [mar/21] * IIF( SRC_TOTAL.CONT_VALOR_LIQUIDO = 0, 0,A.CONT_VALOR_LIQUIDO/SRC_TOTAL.CONT_VALOR_LIQUIDO) MAR_21
, [abr/21] * IIF( SRC_TOTAL.CONT_VALOR_LIQUIDO = 0, 0,A.CONT_VALOR_LIQUIDO/SRC_TOTAL.CONT_VALOR_LIQUIDO) ABR_21
, [mai/21] * IIF( SRC_TOTAL.CONT_VALOR_LIQUIDO = 0, 0,A.CONT_VALOR_LIQUIDO/SRC_TOTAL.CONT_VALOR_LIQUIDO) MAI_21
, [jun/21] * IIF( SRC_TOTAL.CONT_VALOR_LIQUIDO = 0, 0,A.CONT_VALOR_LIQUIDO/SRC_TOTAL.CONT_VALOR_LIQUIDO) JUN_21
, [jul/21] * IIF( SRC_TOTAL.CONT_VALOR_LIQUIDO = 0, 0,A.CONT_VALOR_LIQUIDO/SRC_TOTAL.CONT_VALOR_LIQUIDO) JUL_21
, [ago/21] * IIF( SRC_TOTAL.CONT_VALOR_LIQUIDO = 0, 0,A.CONT_VALOR_LIQUIDO/SRC_TOTAL.CONT_VALOR_LIQUIDO) AGO_21
, [set/21] * IIF( SRC_TOTAL.CONT_VALOR_LIQUIDO = 0, 0,A.CONT_VALOR_LIQUIDO/SRC_TOTAL.CONT_VALOR_LIQUIDO) SET_21
, [out/21] * IIF( SRC_TOTAL.CONT_VALOR_LIQUIDO = 0, 0,A.CONT_VALOR_LIQUIDO/SRC_TOTAL.CONT_VALOR_LIQUIDO) OUT_21
, [nov/21] * IIF( SRC_TOTAL.CONT_VALOR_LIQUIDO = 0, 0,A.CONT_VALOR_LIQUIDO/SRC_TOTAL.CONT_VALOR_LIQUIDO) NOV_21
, [dez/21] * IIF( SRC_TOTAL.CONT_VALOR_LIQUIDO = 0, 0,A.CONT_VALOR_LIQUIDO/SRC_TOTAL.CONT_VALOR_LIQUIDO) DEZ_21
FROM CTE_TOTAL_USUARIOS A
INNER JOIN (SELECT CORR_DESCRICAO2 ,SUM(CONT_VALOR_LIQUIDO) AS CONT_VALOR_LIQUIDO
FROM CTE_TOTAL_USUARIOS
GROUP BY CORR_DESCRICAO2) AS SRC_TOTAL
ON A.CORR_DESCRICAO2 = SRC_TOTAL.CORR_DESCRICAO2
INNER JOIN [dbo].[TMPEX20201103_Multi_Calculo_Proporcao_Usuario_2021v1] NT
ON NT.PONTO_DE_VENDA = A.CORR_DESCRICAO2
ORDER BY 1 ASC, 2 ASCSeque a query
Algué poderia me ajudar por favor?
Todas as Respostas
-
-
Pamila,
Vamos por partes, acredito que inicialmente você deveria remover a função IIF() do seu comando Select, executar, validando o retorno e tendo a certeza que o Select esta sendo executado.
Após isso, você poderia começar a declarar o bloco de código composto pela função IIF(), mas parte por parte, você esta utilizando uma quantidade de aninhamentos dentro do seu código que fica difícil de entendermos.
Vejo que uma boa alternativa seria transformar este trecho que esta sendo utilizado com as funções IIF() em uma outra CTE e posteriormente estar estabelecendo a devido junção.
Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]