1

这将很难解释,但我正在编写一个小系统来管理我的 Scrum 项目。基础是:我有一个项目,它可以有许多 sprint,一个 sprint 可以分成几个部分。例如,项目 A 有 4 个冲刺。每个冲刺都分为计划、冲刺和稳定部分。

我正在使用 SQL Server 2012。

一个冲刺可以与另一个冲刺重叠。这允许一些开发人员参与 Sprint B 的计划,而其他开发人员仍在 Sprint A 中进行稳定工作。因此,两个 sprint 的计划和稳定在同一周进行。

该应用程序处理得很好。我的问题在于我正在尝试创建的报告。我希望它在 y 轴上列出日期,x 轴显示资源及其分配的内容。一个资源一次只能是一个 sprint 的一部分。

目前,我只是想查询项目的日期、该日期所涵盖的 sprint 以及 sprint 部分。但我只希望每个日期值返回一行。由于重叠,我得到重复的日期值。

这是我当前的查询:(日历只是所有可能的日期,还有一些关于该日期的方便数据)

SELECT
    cal.DateValue,
    ps.Description,
    pss.Description
FROM calendar cal
INNER JOIN project p
    ON cal.DateValue BETWEEN p.StartDate AND p.EndDate
INNER JOIN project_sprint ps
    ON ps.ProjectId = p.Id
    AND cal.DateValue BETWEEN ps.StartDate AND ps.EndDate
    AND ps.Deleted IS NULL
INNER JOIN project_sprint_section pss
    ON pss.ProjectSprintId = ps.Id
    AND cal.DateValue BETWEEN pss.StartDate AND pss.EndDate
    AND pss.Deleted IS NULL
WHERE p.Id = 26
ORDER BY cal.DateValue

这是我得到的结果,显示了我遇到的问题:

在此处输入图像描述

从 4 日到 9 日,计划和稳定重叠。

我希望查询做的是,使用一个组,可能将第二个描述返回为:重叠日期的“计划/稳定”。

但我不确定是否有有效的方法来做到这一点。这可以用一个组来完成,看看是否有一个计数> 1,然后将两行描述连接起来?

4

1 回答 1

0

是一个示例,如果您想将 CTE 用于组 concat。但我不推荐它。您可以简单地使用 XML 方法来做同样的事情。

于 2013-08-06T23:33:45.340 回答