2017-06-13 72 views
0

我想插入到嵌套的CTE內的臨時表中,如下面的代碼所示。我可以從第一個x中選擇第二個表達式,但不能插入臨時表。SQL:插入到嵌套的公用表表達式中的臨時表

WITH x AS 
    (
     SELECT * FROM MyTable 
    ), 
    y AS 
    (
     SELECT * INTO #temp FROM x 
    ) 
    SELECT * FROM y 

我必須這樣做,使用嵌套的CTE,因爲有其他邏輯來實現。我知道我可以在表達式之外插入臨時表。有沒有辦法做到這一點?請幫忙。

回答

4

SQL Server非常明確。查詢不能返回結果集並將結果保存到查詢中。您可以輕鬆地做到:

WITH x AS (
     SELECT * FROM MyTable 
    ) 
SELECT x.* 
INTO #temp 
FROM x; 

然後:

SELECT t.* 
FROM #temp t; 

第一個查詢結果保存設置到一個臨時表。第二個返回查詢中的值。

+0

我提到我知道它可以在表達之外完成。但是我必須在嵌套表達式中這樣做,因爲其他邏輯。我想知道這是否可能。感謝您的快速回復 – Amir

+0

我接受了,因爲沒有其他方法可以做到這一點,我必須在不使用嵌套CTE的情況下執行此操作 – Amir