这很难解释,但我正在编写一个小型系统来管理我的scrum项目。基础是:我有一个项目,可以有很多冲刺,冲刺可以分成几个部分。例如,项目A有4个冲刺。每个sprint都分为Planning,Sprint和Stabilization部分。
我正在使用SQL Server 2012。
sprint可以与另一个sprint重叠。这允许一些开发人员参与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天,计划和稳定重叠。
我希望查询要做的是,使用一个组,可能会将第二个描述返回为:“Planning / Stabilization”,用于重叠日期。
但我不确定是否有一种有效的方法可以做到这一点。可以通过群组完成,看看是否有计数> 1,然后连接两行描述?