Sql server 使用带有多个with的insert语句

Sql server 使用带有多个with的insert语句,sql-server,common-table-expression,Sql Server,Common Table Expression,我有一个SQL query server 2012,它有多个with语句来对初始结果集执行计算。是否有一种方法可以在临时表中的每个with语句中执行insert 然后,我可以在最后执行一次选择,以良好的格式查看结果 下面是一个SQL代码示例。真正的查询很长,所以我不想发布它。如果有完全不同的方法,我会洗耳恭听 with tce as (Select cash from sometable), test1 as (((select * from tce) * 100) as morecash),

我有一个SQL query server 2012,它有多个with语句来对初始结果集执行计算。是否有一种方法可以在临时表中的每个with语句中执行insert

然后,我可以在最后执行一次选择,以良好的格式查看结果

下面是一个SQL代码示例。真正的查询很长,所以我不想发布它。如果有完全不同的方法,我会洗耳恭听

with tce as (Select cash from sometable),
test1 as (((select * from tce) * 100) as morecash),
test 2 as (((select * from test1) * 100) as evenmorecash) 

只需将CTE扩展到临时表插入:

-- Query 1
SELECT cash
INTO #temp1
FROM sometable;

-- Query 2
SELECT cash * 100 as morecash
INTO #temp2
FROM #temp1

-- Query 3
SELECT morecash * 100 as evenmorecash
INTO #temp3
FROM #temp2;

-- Output
SELECT *
FROM #temp3;

只需将CTE扩展到临时表插入:

-- Query 1
SELECT cash
INTO #temp1
FROM sometable;

-- Query 2
SELECT cash * 100 as morecash
INTO #temp2
FROM #temp1

-- Query 3
SELECT morecash * 100 as evenmorecash
INTO #temp3
FROM #temp2;

-- Output
SELECT *
FROM #temp3;

首先-您所指的是CTE或公共表表达式。这是一个窗口函数,根据它的编写方式,它的性能可能与标量函数一样差,所以要小心!如果没有看到您的代码,这里的任何人都无法告诉您什么是或不是您的最佳案例。即使这样,我们也不知道您的系统、公共负载、用户数量、服务器/数据库设置并行性、跟踪标志等。这是有效的语法吗?选择*从tce*100为什么要将每个cte插入临时表?为什么不从它们中进行选择呢?首先,您所指的是CTE或公共表表达式。这是一个窗口函数,根据它的编写方式,它的性能可能与标量函数一样差,所以要小心!如果没有看到您的代码,这里的任何人都无法告诉您什么是或不是您的最佳案例。即使这样,我们也不知道您的系统、公共负载、用户数量、服务器/数据库设置并行性、跟踪标志等。这是有效的语法吗?选择*从tce*100为什么要将每个cte插入临时表?为什么不从中选择一个呢?