gpt4 book ai didi

asp.net - 与 CTE 一起使用的重复记录 SQL Server 2008

转载 作者:行者123 更新时间:2023-12-04 05:53:50 24 4
gpt4 key购买 nike

我需要管理存储在我的数据库中的层次结构数据。但我现在有一个问题。请看我的例子

我有一张 table 叫 COMMON.TASK_REL
enter image description here

我的第二张 table 叫做 Common. task
enter image description here

我想需要对 task_seq 进行排序并返回如下结果:

Task Name        || Task_Seq
Item1 1
..Item1.2 1
...Item1.2.1 1
..Item1.1 2

这是我的查询
--Common task SQL modify --
WITH ctLevel
AS
(
SELECT
C_TASK_ID AS Child
,P_Task_ID AS Parent
,common_task.TASK_SEQ AS taskOrder
,1 AS [Level]
,CAST(C_TASK_ID AS VARCHAR(MAX)) AS [Order]
,CAST (Replicate('.', 1) + common_task.TASK_NAME AS VARCHAR(25)) AS [Task_Name]
FROM
[COMMON.TASK_REL] as common_task_rel,
[COMMON.TASK] as common_task
WHERE common_task_rel.C_TASK_ID = common_task.TASK_ID
and common_task.[TASK_TYPE] = 'B' AND common_task.[MODULE_CODE] = 'LWRPT'
AND common_task.[STATUS] <> 'D'
UNION ALL

SELECT
C_TASK_ID AS Child
,P_Task_ID AS Parent
,common_task.TASK_SEQ AS taskOrder
,[Level] + 1 AS [Level]
,[Order] + '.' + CAST(C_TASK_ID AS VARCHAR(MAX)) AS [Order]
,CAST (Replicate('.', [Level] + 1) + common_task.TASK_NAME AS VARCHAR(25)) AS [Task_Name]
FROM [COMMON.TASK_REL] as common_task_rel
INNER JOIN ctLevel
ON ( P_Task_ID = Child ) , [COMMON.TASK] as common_task
WHERE common_task_rel.C_TASK_ID = common_task.TASK_ID
and common_task.[TASK_TYPE] = 'B' AND common_task.[MODULE_CODE] = 'LWRPT'
AND common_task.[STATUS] <> 'D'
)

-- Viewing Data
SELECT Child ,Parent ,taskOrder,Level,[Order],Task_Name
FROM ctLevel
GROUP BY Child ,Parent ,taskOrder,Level,[Order],Task_Name
order by [Order];
GO

但我的结果返回重复的行:

enter image description here

任何人都可以帮助我纠正我的查询?谢谢

最佳答案

我相信您的重复项来自您的根/ anchor 查询。您应该将以下内容添加到该查询中:

AND Task_Seq = 0

基本上,您只希望将根设置为树的开头。 301|300 在递归部分之前不应被拾取( union all 之后的部分)

如果这没有意义,那么我可以通过修改重复您的查询,但这对于一个小的更改来说似乎是不必要的。

关于asp.net - 与 CTE 一起使用的重复记录 SQL Server 2008,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9755931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com