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,

Другие вопросы по тегам