2014-11-21 48 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的。