sql-server - 将 with cte 查询的结果插入临时表

标签 sql-server common-table-expression

我想将此查询的结果存储到临时表中:

WITH cOldest AS
(
    SELECT 
       *, 
       ROW_NUMBER() OVER (PARTITION BY [MyKey] ORDER BY SomeColumn DESC) AS rnDOB 
    FROM MyTable
)
SELECT
    C.*
 ***    Insert into #MyTempTable *** This part doesn't work  
     FROM
     cOldest C
     WHERE
     C.rnDOB = 1

提前致谢。

最佳答案

假设这适用于SQL Server:CTE 仅适用于一个 语句 - 因此您不能同时拥有SELECTINSERT - 只需使用INSERT:

WITH cOldest AS
(
    SELECT 
       *, 
       ROW_NUMBER() OVER (PARTITION BY [MyKey] ORDER BY SomeColumn DESC) AS rnDOB 
    FROM MyTable
)
INSERT INTO #MyTempTable(Col1, Col2, ....., ColN)
  SELECT Col1, Col2, ...., ColN
  FROM cOldest C
  WHERE C.rnDOB = 1

这要求#MyTempTable 已存在。如果您想使用 SELECT 创建它 - 请使用以下语法:

WITH cOldest AS
(
 .....
)
SELECT c.*
INTO #MyTempTable
FROM cOldest c
WHERE C.rnDOB = 1

关于sql-server - 将 with cte 查询的结果插入临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28825305/

相关文章:

.net - SQL Server View 可以有主键和外键吗?

sql - 公用表表达式 : Relation does not exist

Java/SQL Server 2008 R2 Express 连接问题

sql-server - 源代码管理中的存储过程/DB 模式

c# - 我怎样才能提高这个 LINQ 的性能?

sql-server - Transact-SQL 中分隔标识符是否被视为 "best-practice"?

Sql服务器CTE获取父级的子级,然后用父级值更新子级

TSQL CTE 错误 : Incorrect syntax near ')'

sql-server - 使用 WITH common_table_expression 的 SQL 查询在 Codeigniter 中失败,但在 SQL Studio 中没有

SQL Server - 在两个方向上遍历树