【发布时间】:2011-12-28 19:01:43
【问题描述】:
我有一个查询,它返回三个 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 语句中都以相同的方式重复。
我想知道是否有办法将那段代码(字段名称块或连接语句块)放入可以在一行中引用它们的地方。有点像迷你视图/功能,但只是作为文本替换。这样,我可以一次编辑这些内容,而不必单独编辑每个 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 部分放在一个单独的地方,这样我就可以重复插入它
【问题讨论】:
-
澄清一下:我想做的就是用代表这些语句的变量/宏替换查询中的文本部分。
-
谢谢!无法弄清楚如何降低格式:-)
-
9年后的2021年还没有办法吗?
标签: sql sql-server tsql dry