Azure DevOps Server查询:如何展示任务与User Story的三级层级
实现任务前置依赖的三级层级SQL查询方案
需求目标:将现有仅展示二级任务层级(任务A → 任务B)的查询,扩展为包含父级用户故事的三级层级结构(用户故事123 → 任务A → 任务B)。
核心实现思路:通过递归CTE(公共表表达式)处理任务的前置依赖关系,同时关联用户故事表获取父级信息,最后根据层级生成缩进格式的输出。
示例SQL代码
WITH RECURSIVE task_hierarchy AS ( -- 基础节点:取无前置任务的任务,关联所属用户故事 SELECT us.id AS story_id, us.name AS story_name, t.id AS task_id, t.name AS task_name, t.predecessor_id, 1 AS level FROM tasks t JOIN user_stories us ON t.user_story_id = us.id WHERE t.predecessor_id IS NULL UNION ALL -- 递归遍历:获取前置任务的子任务,继承用户故事信息并提升层级 SELECT th.story_id, th.story_name, t.id AS task_id, t.name AS task_name, t.predecessor_id, th.level + 1 AS level FROM tasks t JOIN task_hierarchy th ON t.predecessor_id = th.task_id ) -- 按用户故事、层级排序,生成带缩进的层级文本 SELECT CASE level WHEN 1 THEN story_name WHEN 2 THEN ' ' || task_name WHEN 3 THEN ' ' || task_name END AS 层级结构 FROM task_hierarchy ORDER BY story_id, level, task_id;
注意事项
- 请根据实际数据库结构,替换示例中的表名(
tasks、user_stories)和字段名(user_story_id等)。 - 若任务前置依赖超过2级,递归逻辑会自动适配,可通过调整
CASE语句中的空格数来对应层级缩进。 - 若需要更复杂的格式化效果,建议在应用层处理缩进,SQL仅负责获取层级关联数据。
内容的提问来源于stack exchange,提问作者Marco Aurélio Andrade
相关产品推荐
相关产品推荐

