Это слишком долго для комментария.
Во-первых, SQL Server не позволяет одному SELECT
возвращать набор результатов и назначать значения переменных. Это встроено в язык.
Во-вторых, присвоение переменной в значительной степени предполагает, что базовый запрос вернет одну строку (или, возможно, до одной строки).
A UNION ALL
запрос - предположительно - собирается вернуть несколько строк. Вы можете подумать: «Ну, на самом деле действительно возвращает только одну строку, так что все в порядке». Однако я могу понять, почему разработчики языка просто запретили синтаксис.
Что вы можете сделать?
- Вы можете поместить
UNION ALL
в подзапрос и выполнить командуназначение во внешнем запросе. - Вы можете выполнить назначение по первому запросу. Если ничего не возвращается, попробуйте второй запрос.
- Возможно, вы сможете перефразировать логику, чтобы этот конкретный запрос не требовался.
Если (3) представляет интерес, ярекомендую вам задать новый вопрос, объяснить логику и предоставить примеры данных и желаемых результатов.