如何修改WiQL查询,筛选有子用户故事且所有子项已关闭的未完结Feature?
修改WiQL查询:仅保留有子用户故事且全关闭的未完结Feature
你的原查询用MODE (DoesNotContain)确实能排除掉带有未关闭子用户故事的Feature,但会把没有任何子用户故事的Feature也包含进来——因为这类Feature自然也不存在"未关闭的子用户故事",符合DoesNotContain的匹配逻辑。
要解决这个问题,只需要在查询里额外增加一个条件:确保Feature至少存在一个子用户故事(不管状态)。可以通过EXISTS子查询实现,具体修改后的WiQL如下:
SELECT [System.Id], [System.Title], [System.AreaPath], [System.IterationPath], [System.Tags] FROM workitemLinks WHERE -- 原有的Feature状态和类型条件 ( [Source].[System.State] <> 'Closed' AND [Source].[System.State] <> 'Removed' AND [Source].[System.WorkItemType] = 'Feature' ) -- 新增:确保当前Feature至少有一个子用户故事(Hierarchy链接) AND EXISTS ( SELECT [System.Id] FROM workitemLinks WHERE [Source].[System.Id] = [Parent].[System.Id] AND [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward' AND [Target].[System.WorkItemType] = 'User Story' ) -- 原有的链接类型和子用户故事状态条件 AND ( [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward' ) AND ( [Target].[System.State] <> 'Closed' AND [Target].[System.WorkItemType] = 'User Story' ) ORDER BY [Target Date] ASC MODE (DoesNotContain)
关键修改说明:
EXISTS子查询会检查当前Feature是否存在至少一个Hierarchy类型的子用户故事,直接过滤掉没有子项的Feature。- 原有的
MODE (DoesNotContain)继续发挥作用:排除那些存在未关闭子用户故事的Feature。 - 两者结合后,最终结果就只会是:状态非Closed/Removed、有子用户故事且所有子用户故事均已关闭的Feature。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

