Простое для чтения решение - использовать CTE (общее табличное выражение). Это принимает форму:
WITH foobar AS (
SELECT foo, bar FROM table_1
UNION
SELECT foo, bar FROM table_2
)
Затем вы можете обращаться к CTE в последующих запросах по имени, как если бы это была обычная таблица:
SELECT foo,bar FROM foobar WHERE foo = 'value'
CTE довольно мощные, я рекомендую читать дальше здесь
Один совет, который вы не найдете в этой статье MS; если вам требуется более одного CTE, поместите запятую между операторами выражения. например:
WITH foo AS (
SELECT thing FROM place WHERE field = 'Value'
),
bar AS (
SELECT otherthing FROM otherplace WHERE otherfield = 'Other Value'
)