Avalados por :

Como resolver o erro de coluna inválida em consulta SQL com UNION ALL

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 8 Vistas
0
Cargando...

Boa tarde,

Estou fazendo uma consulta, da qual vou dar um exemplo porque é muito mais complexa, para ver se você pode me ajudar:

Select T.CardName AS 'Nome do Cliente', SUM(T.DocTotal) AS 'Total Líquido Total'

from

(

SELECT

CardName AS 'Nome do Cliente',

DocTotal AS 'Total Líquido'

FROM

OINV

WHERE CardName ='VIAJES TIME TRAVEL CT'

UNION ALL

SELECT

CardName AS 'Nome do Cliente',

-DocTotal AS 'Total Líquido'

FROM ORIN

WHERE CardName ='VIAJES TIME TRAVEL CT'

) T

GROUP BY T.CardName

Estou recebendo a seguinte mensagem de erro:

Msg 207, Nível 16, Estado 1, Linha 25. Nome da coluna inválido 'CardName'.

Msg 207, Nível 16, Estado 1, Linha 2. Nome da coluna inválido 'CardName'.

Msg 207, Nível 16, Estado 1, Linha 2. Nome da coluna inválido 'DocTotal'.

Alguém poderia me ajudar a realizar esta consulta de união de outras 2 subconsultas?

Muito obrigado

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Olá.

Ou também colocar entre colchetes o nome original, assim:

 [Nome Cliente] 

Saudações.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Muito obrigado!

Você acertou em cheio, era exatamente o que eu estava procurando.

A única coisa que tive que fazer para funcionar foi adicionar o sublinhado nos aliases desta forma:

"Nome_Cliente" em vez de "Nome Cliente" e funciona perfeitamente.

Um abraço!

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

O que acontece é que ao fazer o select * from T, você está usando o nome dos campos (cardname, etc.), o que você deve fazer é usar T.[Alias do campo] porque está usando alias nas consultas unidas pelo UNION

TENTE

Select T.Nome Cliente, SUM (T.Total Líquido) AS 'Soma Total Líquido'

from

(

SELECT

CardName AS 'Nome Cliente',

DocTotal AS 'Total Líquido'

FROM

OINV

WHERE CardName ='VIAJES TIME TRAVEL CT'

UNION ALL

SELECT

CardName AS 'Nome Cliente',

-DocTotal AS 'Total Líquido'

FROM ORIN

WHERE CardName ='VIAJES TIME TRAVEL CT'

) T

GROUP BY T.CardName

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

O que acontece é que ao fazer o select * from T, você está usando os nomes dos campos (cardname, etc). O que você deve fazer é usar T.[Alias do campo] já que você está usando alias nas consultas unidas pelo UNION.

TENTE

Select T.Nome Cliente, SUM (T.Total Líquido )AS 'Soma Total Líquido'

from

(

SELECT

CardName AS 'Nome Cliente',

DocTotal AS 'Total Líquido'

FROM

OINV

WHERE CardName ='VIAJES TIME TRAVEL CT'

UNION ALL

SELECT

CardName AS 'Nome Cliente',

-DocTotal AS 'Total Líquido'

FROM ORIN

WHERE CardName ='VIAJES TIME TRAVEL CT'

) T

GROUP BY T.CardName

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?