私は前に書かれた別のCTEを参照する再帰的なCTEを書こうとしています。CTEとセミコロンを閉じる
WITH nodes(node, node_name, parent, parent_name) AS
(
SELECT
Grp.PermissionGroupID as node,
Grp.GroupName as node_name,
GrpLink.ParentPermissionGroupID as parent,
ParentGrp.GroupName as parent_name
FROM _CCC_Permission_Group Grp
LEFT JOIN _CCC_Permission_GroupGroup GrpLink
on Grp.PermissionGroupID = GrpLink.ChildPermissionGroupID
LEFT JOIN _CCC_Permission_Group ParentGrp
on GrpLink.ParentPermissionGroupID = ParentGrp.PermissionGroupID
);
WITH Hierarchy(node, node_name, depth, parent, parent_name)
AS
(
SELECT
node,
node_name,
0,
parent,
parent_name
FROM nodes as FirstDepth
WHERE parent IS NULL
UNION ALL
SELECT
NextDepth.node,
NextDepth.node_name,
Parent.depth + 1,
Parent.parent,
Parent.parent_name
FROM nodes as NextDepth
INNER JOIN Hierarchy as Parent
on NextDepth.parent = Parent.parent
)
SELECT *
FROM Hierarchy
OPTION (MAXRECURSION 32767)
私はエラーを取得する:
Msg 102, Level 15, State 1, Line 17 Incorrect syntax near ';'.
私は、セミコロンを削除すると、私は閉じてオフしましセミコロンで再帰Hierarchy
CTEを書き込む前に
最初のCTE nodes
エラーを取得してください:
Msg 156, Level 15, State 1, Line 19 Incorrect syntax near the keyword 'WITH'.
Msg 319, Level 15, State 1, Line 19 Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.
...私はCTEを書いていません(lそれだけで再帰的なもの)、しばしば、;
プレースメントとのこの明らかな競合を解決する方法があまりにもわかりません。