¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo resolver el error de columna no válida en consulta SQL con UNION ALL

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

Buenas tardes,

Estoy haciendo una consulta, de la cual os pongo un ejemplo porque es mucho más compleja, para ver si me podéis ayudar:

Select T.CardName AS 'Nombre Cliente', SUM(T.DocTotal) AS 'Suma Total Neto'

from

(

SELECT

CardName AS 'Nombre Cliente',

DocTotal AS 'Total Neto'

FROM

OINV

WHERE CardName ='VIAJES TIME TRAVEL CT'

UNION ALL

SELECT

CardName AS 'Nombre Cliente',

-DocTotal AS 'Total Neto'

FROM ORIN

WHERE CardName ='VIAJES TIME TRAVEL CT'

) T

GROUP BY T.CardName

Me da el siguiente mensaje de error:

Msg 207, Nivel 16, Estado 1, Línea 25. Nombre de columna no válido 'CardName'.

Msg 207, Nivel 16, Estado 1, Línea 2. Nombre de columna no válido 'CardName'.

Msg 207, Nivel 16, Estado 1, Línea 2. Nombre de columna no válido 'DocTotal'.

¿Alguien me podría ayudar cómo tengo que hacer para realizar esta consulta de la unión de otras 2 subconsultas?

Muchas gracias

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

4 Respuestas

0
Cargando...

Hola.

O también encerrar entre corchetes cuadrados el nombre original, así:

 [Nombre Cliente] 

Saludos.

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

¡Muchas gracias!

Has acertado en el clavo, era justo lo que estaba buscando.

Lo único que he tenido que hacer para que funcione es agregar el guion bajo en los alias de esta forma:

"Nombre_Cliente" en lugar de "Nombre Cliente" y funciona perfectamente.

¡Un saludo!

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

Lo que sucede es que al hacer el select * from T, estás utilizando el nombre de los campos (cardname, etc.), lo que debes hacer es utilizar T.[Alias del campo] porque estás utilizando alias en los queries unidos por el UNION

INTENTA

Select T.Nombre Cliente, SUM (T.Total Neto )AS 'Suma Total Neto'

from

(

SELECT

CardName AS 'Nombre Cliente',

DocTotal AS 'Total Neto'

FROM

OINV

WHERE CardName ='VIAJES TIME TRAVEL CT'

UNION ALL

SELECT

CardName AS 'Nombre Cliente',

-DocTotal AS 'Total Neto'

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...

Lo que sucede es que al hacer el select * from T, estás utilizando el nombre de los campos (cardname, etc). Lo que debes hacer es utilizar T.[Alias del campo] ya que estás utilizando alias en los queries unidos por el UNION.

INTENTA

Select T.Nombre Cliente, SUM (T.Total Neto )AS 'Suma Total Neto'

from

(

SELECT

CardName AS 'Nombre Cliente',

DocTotal AS 'Total Neto'

FROM

OINV

WHERE CardName ='VIAJES TIME TRAVEL CT'

UNION ALL

SELECT

CardName AS 'Nombre Cliente',

-DocTotal AS 'Total Neto'

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?