Si está ejecutando una consulta en SQL Server y recibe el siguiente error...
Msg 104, Level 16, State 1, Line 8
ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator.
…deberías revisar tu declaración SQL – probablemente hayas omitido una columna de tu SELECT
lista.
Como implica el mensaje de error, probablemente solo verá este error si está ejecutando una consulta que contiene un UNION
, INTERSECT
o EXCEPT
operador.
Simplemente agregue la columna a su SELECT
list debería solucionar el problema.
Ejemplo
Aquí hay un ejemplo de cómo generar el error.
SELECT
CatName
FROM Cats
UNION ALL
SELECT
DogName
FROM Dogs
ORDER BY CatId;
Resultado:
Msg 104, Level 16, State 1, Line 8 ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator.
El problema aquí es que estoy tratando de ordenar por el CatId
columna, pero en realidad no estoy seleccionando esa columna en mi SELECT
lista.
La forma más fácil de solucionar esto es agregar esa columna a mi SELECT
lista.
SELECT
CatId AS PetID,
CatName AS PetName
FROM Cats
UNION ALL
SELECT
DogId AS PetID,
DogName AS PetName
FROM Dogs
ORDER BY PetId;
Resultado:
+---------+-----------+ | PetID | PetName | |---------+-----------| | 1 | Brush | | 1 | Yelp | | 2 | Scarcat | | 2 | Woofer | | 3 | Flutter | +---------+-----------+
En realidad, en mi caso estoy seleccionando columnas con diferentes nombres (CatId
vs DogId
, CatName
vs DogName
), así que decidí usar un alias para esas columnas (PetId
y PetName
). En este caso, puedo ORDER BY
el nombre de alias (PetId
).