[英]Can use select into with multiple cte
可以和多個cte一起使用select嗎? 例如,在下面的代碼中,將第一個cte cte_table的結果插入dbo.table1中,然后定義另一個cte。 這可能嗎?
WITH cte_table
AS
(
SELECT *
FROM dbo.table
)
INSERT INTO dbo.table1
SELECT *
FROM [cte_table]
, cte_table2
AS
(
SELECT *
FROM dbo.table2
)
將所有CTE鏈接起來,然后將其選入。
WITH First_CTE AS
(
SELECT
Columns
FROM
Schema.Table
WHERE
Conditions
),
Second_CTE AS
(
SELECT
Columns
FROM
Schema.OtherTable
WHERE
Conditions
)
SELECT
Variables
INTO
NewTable
FROM
First_CTE A
JOIN
Second_CTE B
ON
A.MatchVar = B.MatchVar
如果您以后不需要CTE,但更喜歡使用比子查詢更簡單的方法作為ETL,這將很有幫助。
不,您不能:您會收到錯誤消息,因為不允許使用INTO
,並且正如其他人所指出的,這是有道理的,因為CTE
旨在成為可重復的(因而是靜態的)引用。
我還記得在某處讀到了很多語法糖,因為執行sql時將cte解析為派生表。
如果您的情況是記錄集的可重用Re-usability
,則在這種情況下,請使用臨時表或表變量。
例如
Select * Into #temp1 From dbo.table
INSERT INTO dbo.table1
SELECT * FROM #temp1
SELECT * FROM #temp1 ..... and do some other re-usability operations.
鏈接的Cte工作如下(僅作為示例)
;With Cte1 As ( Select * from table1)
,Cte2 As (Select * from table2)
select c1.*,c2.*
from cte1 c1, cte2 c2
希望您了解何時使用什么以及如何使用。
否您不能在CTE中使用select into。 而且實際上也沒有任何意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.