在SQL Server中,我维护了以下细节:
S.No | 家长ID | Child_ID | 数量 |
---|---|---|---|
1 | 空 | 1 | 1 |
2 | 1 | 2 | 2 |
3 | 2 | 3 | 4 |
4 | 空 | 5 | 2 |
5 | 5 | 6 | 5 |
6 | 6 | 7 | 1 |
7 | 空 | 1 | 2 |
8 | 1 | 7 | 3 |
9 | 7 | 9 | 1 |
需要的表格如下。
数量 | Child_ID | 团体 |
---|---|---|
1 | 1 | 1 |
2 | 2 | 1,2 |
4 | 3 | 1,2,3 |
2 | 5 | 5 |
5 | 6 | 5,6 |
1 | 7 | 5,6,7 |
2 | 1 | 1 |
3 | 7 | 1,7 |
1 | 9 | 1,7,9 |
我尝试使用这段代码,但出现递归错误:
WITH GroupTable (Qty, Child_ID, Parent_ID, Groups) AS
(
SELECT
S.Qty, S.Child_ID, S.Parent_ID,
CONVERT(varchar(100), S.Child_ID) AS path
FROM
tabel1 AS S
UNION ALL
SELECT
S.Qty, S.Child_ID, p.Parent_ID,
CONVERT(varchar(100), (RTRIM(p.Groups) + ',' +
CONVERT(varchar(100), S.Child_ID)))
FROM
GroupTable AS p
JOIN
tabel1 AS S ON S.Parent_ID = p.Child_ID
)
SELECT
Qty, Child_ID, Groups
FROM
GroupTable
WHERE
Parent_ID IS NULL
我收到这个错误:
消息 530,级别 16,状态 1,第 1 行语句终止。
语句完成前最大递归 100 已用完
我不明白你的问题,但根据你提供的错误,你可以在 SQL Server 中设置最大递归。在下面的示例中,我将 500 设置为最大 32,767,具体取决于 SQL Server 版本。
SELECT
Qty, Child_ID, Groups
FROM
GroupTable
WHERE
Parent_ID IS NULL
OPTION (MAXRECURSION 500)
对于最大递归问题,您可以使用:
FROM GroupTable
option (maxrecursion 0)