SQL Server: ORDER BY в подзапросе с UNION

у меня есть два запроса в сочетании сUNION ALL1:

--Query 1
SELECT Flavor, Color
FROM Friends

 

--Query 2
SELECT Flavor,
    (SELECT TOP 1 Color
     FROM Rainbows
     WHERE Rainbows.StrangerID = Strangers.StrangerID
     ORDER BY Wavelength DESC
    ) AS Color
FROM Strangers

Оба из которых, конечно, прекрасно работают отдельно, но в сочетании сUNION ALL:

SELECT Flavor, Color
FROM Friends

UNION ALL

SELECT Flavor,
    (SELECT TOP 1 Color
     FROM Rainbows
     WHERE Rainbows.StrangerID = Strangers.StrangerID
     ORDER BY Wavelength DESC
    ) AS Color
FROM Strangers

Запрос не выполняется с ошибкой:

Сообщение 104, Уровень 15, Состояние 1, Строка 3
Элементы ORDER BY должны отображаться в списке выбора, если инструкция содержит оператор UNION.

Как использовать ORDER BY в выражении с UNION ALL?

Копируемый пример
CREATE TABLE Friends (Flavor int, Color int)
CREATE TABLE Strangers (Flavor int, StrangerID int)
CREATE TABLE Rainbows (StrangerID int, Color int, Wavelength int)
go

SELECT Flavor, Color
FROM Friends

UNION ALL

SELECT Flavor,
    (SELECT TOP 1 Color
     FROM Rainbows
     WHERE Rainbows.StrangerID = Strangers.StrangerID
     ORDER BY Wavelength DESC
    ) AS Color
FROM Strangers
go

DROP TABLE Rainbows
DROP TABLE Strangers
DROP TABLE Friends

Сервер: Msg 104, Уровень 15, Состояние 1, Линия 2
Элементы ORDER BY должны отображаться в списке выбора, если инструкция содержит оператор UNION.

Сноски1Придуманный гипотетический пример. Или нет.Смотрите такжеSQL-запрос - Использование Order By в UNIONSQL UNION и ORDER BYSQL: использование Top 1 в запросе UNION с Order ByВлияние упорядочения коррелированных подзапросов в проекции

Ответы на вопрос(3)

Ваш ответ на вопрос