【发布时间】:2018-01-17 20:50:23
【问题描述】:
我得到了一个清理脚本,它使用了大约 85 个临时表,建议我使用通用表表达式。
我有 3 个 CTE,第一个是使用 Union all 将 7 个表放在一起的结果。其次是另外 2 个 CTE。脚本运行到:
select * from CTE_1
Union all
select * from CTE_2
Union all
select * from CTE_3
然后我想将所有这些结果放入一个可重用的表中,这样我就可以添加一些带有各种 case 语句逻辑的连接。我怎样才能把这些放到一个临时表中,以便我以后可以引用它。
我希望减少临时表的数量,因此我最好将多个 CTE 放入一个临时表中,而不是将每个 CTE 放入一个临时表中。我目前有:
; with [CTE One] as (
select 1 as col
),
[CTE Two] as (
select 2 as col
),
[CTE Three] as (
select 3 as col
)
select * from CTE_1
Union all
select * from CTE_2
Union all
select * from CTE_3
【问题讨论】:
-
如果 ctes 可以联合起来,也许你完全跳过 cte 而只是将查询联合在一起。我不得不说,如果你有一个包含 85 个临时表的脚本,那么仅仅将它迁移到 ctes 并不会做太多事情。任何涉及的逻辑都需要认真重新考虑。
-
您的具体问题是什么?
标签: sql sql-server common-table-expression