我正在尝试在子查询中执行一些递归操作,但是我似乎无法使用WITH
-我错过了一些东西吗,或者是否有解决方法?
WHERE swn.stocknode_id in
(
WITH Hierachy(stocknode_id, short_desc, PARENTNODE_ID, level)
AS
(
SELECT
a.stocknode_id,
0 AS level
FROM stock_website_node AS a
WHERE a.short_desc = 'XXXXXXXX'
AND a.PARENTNODE_ID = 0
UNION ALL
SELECT
a.stocknode_id,
ch.level + 1
FROM stock_website_node AS a
INNER JOIN Hierachy ch
ON a.PARENTNODE_ID = ch.stocknode_id
)
SELECT
stocknode_id
FROM Hierachy
WHERE level > 0
)
我遇到了:
Incorrect syntax near the keyword 'WITH'.
最佳答案
公用表表达式必须在顶层。
您需要将CTE从WHERE
子句中删除,然后像这样引用WHERE
中的stocknode_id:
WHERE swn.stocknode_id in (SELECT stocknode_id FROM Hierachy WHERE level > 0)
关于sql-server - 在子查询(MS SQL)中使用WITH,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20289237/