2014-11-21 59 views
1
WITH t(num) AS (SELECT MAX(stok) FROM cd) 

WITH y AS (SELECT cdno FROM cd,t WHERE cd.stok IN (t.num)) 

select * from y 

我有此代碼線程。但是是不正確的,我有一些錯誤。我不明白爲什麼請幫助。SQL Server:與使用不正確的語法錯誤

當我使用第1行和select * from t正在工作,但在這種類型不工作。

回答

1

你不能有兩個CTE(公用表達式)接連這樣。如果你定義 CTE,你需要使用這個語法:

WITH t(num) AS 
(
    SELECT MAX(stok) 
    FROM cd 
), y AS 
(
    SELECT cdno 
    FROM cd, t 
    WHERE cd.stok IN (t.num) 
) 
SELECT * 
FROM y 

您可以鏈一前一後多個CTE的中間用逗號分隔,,只是留下了WITH關鍵字爲後續CTE的。