Inquiridor
Msg 207, Level 16, State 1, Invalid column name

Discussão Geral
-
Boa tarde! Estou tentando fazer um envio de email através de informações retiradas de 4 tabelas usando o comando JOIN, ele consegue pegar as informações direitinho. Porem preciso enviar essas informações por email e acaba dando erro "Msg 207, Level 16, State 1, Invalid column name" nas colunas q selecionei para o envio do email. É possível esse erro devido a tantas junções de tabelas? Segue query:
--Insere os dados dos chamados, das certificações e dos tecnicos na tabela [WinAutomation].[dbo].[Dell_Certificacao_Email]
INSERT INTO [WinAutomation].[dbo].[Dell_Certificacao_Email](
[Urgency]
,[Incident]
,[Company]
,[Product]
,[TEC]
,[Tecnicos]
,[CIDADE]
,[UF]
,[PERSONAL_ID]
,[ID2]
,[Certificacao]
,[DATA_INSERCAO])
SELECT * FROM (
SELECT A.[Urgency]
,A.[Incident]
,A.[Company]
,A.[Product]
,A.[TEC]
,B.[Tecnicos]
,B.[CIDADE]
,B.[UF]
,B.[PERSONAL_ID]
,D.[PERSONAL_ID] as [ID2]
,C.[Certificacao]
,GETDATE() as [DATA_INSERCAO]
FROM (SELECT [Company],[Urgency],[Incident],[Product], '0555-' + [Branch] + '-' +[Territory] as [TEC]
FROM [SRMS].[dbo].[Brazil_Open]
WHERE [Nat_Acc] = 0044100162) A
LEFT JOIN [WinAutomation].[dbo].[Dell_Certificacao] as C
on A.[Product] = C.[Product]
LEFT JOIN [WinAutomation].[dbo].[Dell_Tecnicos] as B
on a.TEC = B.[FILIAL_TERRITORIO]
LEFT JOIN [WinAutomation].[dbo].[Dell_Educate] as D
on B.[PERSONAL_ID] = D.[PERSONAL_ID]
and C.[Certificacao] like D.[Certificacao]
WHERE TEC IN (SELECT [FILIAL_TERRITORIO] FROM [WinAutomation].[dbo].[Dell_Tecnicos])) as E
WHERE [ID2] IS NULL AND [Product] IS NOT NULL AND [Certificacao] IS NOT NULL AND [Incident] NOT IN(
SELECT [Incident] FROM [WinAutomation].[dbo].[Dell_Certificacao_Email]
WHERE [DATA_INSERCAO] <GETDATE()+1 AND [DATA_INSERCAO]> GETDATE()-1)
--Preenche como 'Não Informado' caso o campo [Company] esteja em branco
UPDATE [WinAutomation].[dbo].[Dell_Certificacao_Email]
SET [Company] = 'Não informado'
WHERE [Company] is null
--Armazena os dados dos emails
INSERT INTO [WinAutomation].[dbo].[Send_Emails] ([Sender]
,[TO_list]
,[CC_list]
,[Subject]
,[body]
,[insert_date])
--Realiza o envio do email
SELECT 'robo.DellCertificacoes@unisys.com'
,(SELECT [Emails]
FROM [WinAutomation].[dbo].[Listas_Email]
WHERE [Projeto] = 'Dell_Certificacoes')
,(SELECT [CC]
FROM [WinAutomation].[dbo].[Listas_Email]
WHERE [Projeto] = 'Dell_Certificacoes')
,[Company]+' - '+convert(nvarchar(8),[Incident])+' - '+[CIDADE]+' - '+[UF]
,'Olá:lin::lin:Verifiquei que o tecnico '+[Tecnicos]+' | '+[TEC]+' não possui a certificação '+[Certificacao]+' para atender o equipamento '+[Product]+' do chamado '+convert(nvarchar(8),[Incident])+'.:lin::lin:Favor verificar.:lin::lin:At,:lin:Analista Virtual'
,GETDATE ()
--Após o envio do email comunicando encerramento do chamado, efetua a alteração do estatus [Enviado] de tudo que seja diferente de 'E' para 'E'.
UPDATE [WinAutomation].[dbo].[Dell_Certificacao_Email]
SET [Enviado] = 'E'
WHERE [Enviado] != 'E'
Todas as Respostas
-
Boa tarde Cinthia, esse erro é apresentado quando alguma coluna presente no código não existe ou está sendo referenciada de forma errada, devido ao fato de não termos a estrutura das tabelas envolvidas não podemos identificar se esta faltando algum campo no seu primeiro insert ou nos demais comandos. Uma parte do código me chamou atenção:
--Armazena os dados dos emails INSERT INTO [WinAutomation].[dbo].[Send_Emails] ([Sender] ,[TO_list] ,[CC_list] ,[Subject] ,[body] ,[insert_date]) --Realiza o envio do email SELECT 'robo.DellCertificacoes@unisys.com' ,(SELECT [Emails] FROM [WinAutomation].[dbo].[Listas_Email] WHERE [Projeto] = 'Dell_Certificacoes') ,(SELECT [CC] FROM [WinAutomation].[dbo].[Listas_Email] WHERE [Projeto] = 'Dell_Certificacoes') ,[Company]+' - '+convert(nvarchar(8),[Incident])+' - '+[CIDADE]+' - '+[UF] ,'Olá:lin::lin:Verifiquei que o tecnico '+[Tecnicos]+' | '+[TEC]+' não possui a certificação '+[Certificacao]+' para atender o equipamento '+[Product]+' do chamado '+convert(nvarchar(8),[Incident])+'.:lin::lin:Favor verificar.:lin::lin:At,:lin:Analista Virtual' ,GETDATE ()
-- parece que está faltando o from, pois tem os nomes dos campos mas não tem a tabela nas 2 penúltimas linhas do insert
--talvez seja a tabela [Dell_Certificacao_Email] que deve aparecer no seu insertNeste insert parece que está faltando o "FROM", nas 2 penúltimas linhas aparecem nomes de colunas porém não consegui identificar o "FROM".
Obrigado.
-
Olá, bom dia.
Se possível revise seu código com as estruturas das tabelas. Se não achar nada de errado tente executar o código em "blocos" menores para identificar em qual declaração está o erro.
Provavelmente a falta do FROM com a tabela como dito acima ou um erro de escrita.
Abs
Vinicius Fonseca - MCP | MCTS | MCDBA | MCITP | MCTS | MCT | ITIL Foundation - DGA SISTEMAS - Se minha resposta for útil, classifique-a. :)
- Editado Vinicius_Fonseca segunda-feira, 16 de abril de 2018 12:47