SQL Server: проблема с UNION ALL и двумя вариантами выбора
Я довольно новичок в SQL и, возможно, делаю что-то не так, поэтому надеюсь, что кто-нибудь может мне помочь с этим
У меня есть более длительная хранимая процедура, которая заканчивается ниже. Идея здесь состоит в том, чтобы объединить два запроса в один, так что мне не нужна отдельная хранимая процедура, но результаты будут разделены по мере выбора страны.selCountry
) а другой выбирает по дате (selDate
).
Когда я пытаюсь сохранить его таким образом, я получаю сообщение об ошибке:Incorrect syntax near the keyword 'UNION'
, Когда я запускаю их в отдельных процедурах, то все работает нормально.
-- create final output
SELECT CONVERT(DATETIME, dDay) AS dDay,
CONVERT(VARCHAR(11), dDay, 106) AS dLong,
CONVERT(VARCHAR(10), dDay, 126) AS dShort,
countries,
regions,
mode,
dName,
dDesc
FROM @tempFix
WHERE countries LIKE '%'+@selCountry+'%'
OR regions LIKE '%'+@selCountry+'%'
ORDER BY dDay
UNION ALL
SELECT CONVERT(DATETIME, dDay) AS dDay,
CONVERT(VARCHAR(11), dDay, 106) AS dLong,
CONVERT(VARCHAR(10), dDay, 126) AS dShort,
countries,
regions,
mode,
dName,
dDesc
FROM @tempFix
WHERE DAY(dDay) = DAY(@selDate)
AND MONTH(dDay) = MONTH(@selDate)
FOR XML PATH('dDays'), ELEMENTS, TYPE, ROOT('root')
Заранее большое спасибо за любую помощь, Майк.
3 ответа
Пожалуйста, удалите ORDER BY и добавьте его в самый конец. Вы не можете разместить ORDER BY перед UNION / UNION ALL.
Вот больше информации об этом синтаксисе.
Вы можете включить предложение ORDER BY только в конце всех операций над множествами в вашем запросе.
Вы не можете включить ORDER BY
пока после последнего запроса в UNION
,