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