这将很难解释,但我正在编写一个小系统来管理我的 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,然后将两行描述连接起来?