我有一个查询返回三个 UNION 查询的结果。每个查询都有一个冗长的 select 语句。 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 语句中都以相同的方式重复。
我想知道是否有一种方法可以将这段代码(字段名称块或连接语句块)放入可以在一行中引用它们的位置。有点像迷你视图/功能,但只是用作文本替换。这样,我可以编辑这些内容一次,而不必单独编辑每个 select 语句的相关位。
这是在 MSSQL 中。有什么办法可以做到我想要解释的事情吗?
Update
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 部分放在单独的位置,以便我可以重复插入它