從MSDN
的CTE必須跟一個SELECT,INSERT,UPDATE或DELETE 聲明引用部分或全部CTE列
它可以像這樣重寫
WITH ADMISSION_OUTSIDE AS
( .....
.....
)
SELECT 'OK' WHERE EXISTS (SELECT * FROM ADMISSION_OUTSIDE)
UNION ALL
SELECT 'NOT OK' WHERE NOT EXISTS (SELECT * FROM ADMISSION_OUTSIDE)
這裏是一個演示
;WITH CTE AS
(
SELECT 1 as a WHERE 1=0
)
SELECT 'OK' WHERE EXISTS (SELECT * FROM CTE)
UNION ALL
SELECT 'NOT OK' WHERE NOT EXISTS (SELECT * FROM CTE)
結果:NOT OK
;WITH CTE AS
(
SELECT 1 as a WHERE 1=1
)
SELECT 'OK' WHERE EXISTS (SELECT * FROM CTE)
UNION ALL
SELECT 'NOT OK' WHERE NOT EXISTS (SELECT * FROM CTE)
結果:OK
的CTE應遵循'SELECT,INSERT,UPDATE或DELETE'陳述 –
也許你在這裏做一些混淆。這不是相關的語法,也不是CTE的相應用法。也許你只是想把你的CTE中的查詢內容放在表變量中。請注意,在CTE定義之後的命令之後,您沒有範圍內的CTE – jean
您是否正在打印以調試查詢?還是你打算也從中選擇數據? –