2017-02-13 31 views
0

我想在同一查詢 中有多個合併語句(一個接一個),但我無法使用相同的日期源。例如:具有相同數據源的SQL多重合並語句(WITH爲)

WITH DATA as(
SELECT * FROM tables_or_joins 
      ) 

MERGE table_name as Target 
USING 
(SELECT * FROM DATA JOIN another table 
) 
.... 
do something more; --and finish this statement here 

-- start another merge here 
MERGE table_name_2 as Target 
USING(
SELECT * FROM DATA and join with another table 
) 
do something else 

但輸出是Invalid object name 'DATA'.在第二次合併。是否有任何其他方式如何在兩個合併中使用數據?希望這已經夠清楚了。

+3

如果你需要爲同'DATA'兩條語句,使用臨時表或表變量。 –

+0

@GordonLinoff是一個更好的方式(性能)使用臨時表或在每個合併中分別聲明數據? – Klapsius

+0

現在我正在使用'@ temp_table',它可以工作。謝謝@Gordon Linoff – Klapsius

回答

-1

您可以使用多發CTE語句

數據處理爲(SELECT * FROM tables_or_joins ),DATA2 AS((SELECT * FROM DATA加入另一個表)

SELECT * FROM數據D加入DATA2 D2上d.id = d2.id

OR

SELECT * FROM DATA工會SELECT * FROM DATA2

+1

你誤會了這個問題...... – Milney

0

CTE是隻爲一個語句良好

甚至不能做DATA

兩個簡單的選擇可以有多個CTE但仍只有一個實際語句

相關問題