我有一個WITH
語句收集我想要的數據。我想要做的是能夠從我的WITH
和INSERT
的不同部分執行SELECT
,從而生成目標表。WITH語句後無法刪除表格
這裏是我長的查詢的簡化版本:
WITH Active AS (
--SELECT 1
),
Inactive AS (
--SELECT 2
),
Churn AS (
--SELECT 3
)
--Drop destination table if exists
IF OBJECT_ID('DestinationTable', 'u') IS NOT NULL DROP TABLE DestinationTable;
SELECT Active.Name, Inactive.Name,Churn.Id
INTO DestinationTable
FROM Active a
JOIN Inactive i ON a.Id = i.Id
JOIN Churn c ON a.Id = c.Id;
但Sql Server的不直接在WITH
後允許IF
聲明。我不想在我的WITH
之前移動IF
,因爲那樣我的目的地表很可能會長時間爲空。
簡單的版本,我的問題的:
我怎麼能寫從WITH
語句轉換成另一個表SELECT
?
爲什麼不截斷你的DestinationTable而不是刪除它並重新創建它?會更簡單,資源更少。 –
這聽起來像你正試圖維護長期查詢中「最近」的緩存結果以供其他地方使用。您可以在「DestinationTable」中添加一列以記錄每次運行「長查詢」時增加的序列號。完成後,刪除所有具有較低序列號的行。使用數據的代碼應該始終可以訪問由一個通用序列號標識的一個完整集。 (請注意您的應用程序需要的交易。) – HABO