У меня есть запрос, который возвращает результаты трех запросов UNION. Каждый запрос имеет длинную инструкцию выбора. Есть части выражения select, которые выглядят так:
coalesce(a.fact1,'Fact1'),
coalesce(b.fact1,'Fact2')
...
раздел from / join также огромен
from table1 t1
join table2 t2 on t1.id = t2.t1_id
join table3 t3 on t2.id = t3.t2_id
и т.д.. Каждый из этих блоков повторяется одинаково для всех трех операторов SELECT.
Мне было интересно, есть ли способ поместить этот кусок кода (или блок имен полей или блок операторов соединения) в место, где я мог бы ссылаться на них в одной строке. Вроде как мини-просмотр / функция, но просто служит заменой текста. Таким образом, я могу отредактировать эти вещи один раз и не нужно редактировать соответствующий бит каждого оператора выбора по отдельности.
Это в MSSQL. Есть ли способ сделать то, что я пытаюсь объяснить?
Обновление
select a.field1, b.field2, c.field3
from table1 a
join table2 b on a.id = b.table1_id
join table3 c on b.id = c.table2_id
where cond1 = 'Pos Condition'
AND cond2 = 'Test'
union
select a.field1, b.field2, d.field3
from table1 a
join table2 b on a.id = b.table1_id
join table3 c on b.id = c.table2_id
join table4 d on c.id = d.table3_id
where cond1 = 'Pos Condition'
AND cond2 = 'Second Type of Result'
Данные в каждом поле слегка изменяются в зависимости от типа результата. Я бы хотел поместить раздел from table1 -> join table3 в отдельное место, чтобы я мог вставить его несколько раз