sql - 如何包装以下 CTE,以便我可以将其输出与 INSERT INTO 语句一起使用?

标签 sql sql-server sql-insert common-table-expression

我正在使用 SQL Server 2012 并且我有以下 T-SQL 查询,它工作正常:

;WITH N(N)AS 
(SELECT 1 FROM(VALUES(1),(1),(1),(1),(1),(1),(1),(1),(1),(1))M(N)),
tally(N)AS(SELECT 1 FROM N,N a,N b,N c,N d)
SELECT
       Mkt,
       Property,
       Season,
       b.Date,
       TName,

FROM Table1 a
CROSS APPLY
( 
  SELECT top(datediff(d,Datefrom,case when DateTo >= DateFrom
             then dateadd(d, 1, DateTo) else DateFrom end))
    DATEADD(d,row_number()over(order by 1/0)-1, DateFrom) Date
  FROM tally
) b

我需要将上述查询的输出插入到另一个表中(我们称它为 Table2)。

如何使用 INSERT INTO 语法包装上述查询?

最佳答案

你需要像下面这样使用.. 检查这一行..INSERT INTO yourTableName(col1,col2.....) Define your tablename and columnnames..

;WITH N(N)AS 
(
    SELECT 1 FROM(VALUES(1),(1),(1),(1),(1),(1),(1),(1),(1),(1))M(N)
),
tally(N) AS
(
    SELECT 1 FROM N,N a,N b,N c,N d
)
INSERT INTO yourTableName(col1,col2.....)
SELECT
       Mkt,
       Property,
       Season,
       b.Date,
       TName,

FROM Table1 a
CROSS APPLY
( 
  SELECT top(datediff(d,Datefrom,case when DateTo >= DateFrom
             then dateadd(d, 1, DateTo) else DateFrom end))
    DATEADD(d,row_number()over(order by 1/0)-1, DateFrom) Date
  FROM tally
) b

关于sql - 如何包装以下 CTE,以便我可以将其输出与 INSERT INTO 语句一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48923982/

相关文章:

mysql - 获取从当月第 n 个日期到下一个第 n 个日期的行

mysql - 导入完整的 MySQL 转储

sql - 我们是否应该将代理键与自然键(唯一索引均值)结合起来以提高可读性并易于查询选择?

mysql - 如何在 MySQL 的 View 中创建临时表

mysql - 使用 MySQL 函数返回字符串的正确语法是什么?

sql - 获取日期 -1 或 2

MySQL查询获取连接表结果

sql-server - VB.NET 中的 SQL 触发器

c# - 无法将 NULL 值插入列 'UserId'

php - 将多维php数组插入mysql表时如何添加id(主键)?