Sql 分组重叠日期
这很难解释,但我正在编写一个小系统来管理我的scrum项目。基本情况是:我有一个项目,它可以有许多sprint,一个sprint可以分为几个部分。例如,项目A有4个sprint。每个冲刺都分为计划、冲刺和稳定部分 我正在使用SQL Server 2012 一个冲刺可以与另一个冲刺重叠。这允许一些开发人员参与sprint B的规划,而其他开发人员仍在sprint A中进行稳定工作。因此,两个sprint的规划和稳定将在同一周内完成 应用程序处理得很好。我的问题在于我正在尝试创建一份报告。我希望它在y轴上列出日期,x轴显示资源及其分配的内容。一个资源一次只能是一个sprint的一部分 目前,我正试图查询项目的日期、该日期涵盖的sprint以及sprint部分。但我只希望每个日期值返回一行。由于重叠,我得到重复的日期值 这是我当前的查询:(日历就是所有可能的日期,还有一些关于那个日期的方便数据) 以下是我得到的反馈,显示了我的问题: 从4号到9号,规划和稳定是重叠的 我想让查询做的是,使用一个组,可能会返回第二个描述:“规划/稳定”作为重叠日期Sql 分组重叠日期,sql,sql-server,group-by,Sql,Sql Server,Group By,这很难解释,但我正在编写一个小系统来管理我的scrum项目。基本情况是:我有一个项目,它可以有许多sprint,一个sprint可以分为几个部分。例如,项目A有4个sprint。每个冲刺都分为计划、冲刺和稳定部分 我正在使用SQL Server 2012 一个冲刺可以与另一个冲刺重叠。这允许一些开发人员参与sprint B的规划,而其他开发人员仍在sprint A中进行稳定工作。因此,两个sprint的规划和稳定将在同一周内完成 应用程序处理得很好。我的问题在于我正在尝试创建一份报告。我希望它在
但我不确定是否有一个有效的方法来做到这一点。这可以用一个组来完成吗,看看是否有一个计数>1,然后连接两行描述?就是一个例子,如果您想用CTE来表示组concat。但我不推荐。您可以简单地使用XML方法来做同样的事情。您需要group concat,它存在于每个数据库中,但似乎不存在于SQL Server中。尝试搜索解决方法:另请参见和,这可以通过递归CTE或游标来完成。我正在考虑CTE(在游标上),但不确定如何完成。一个主意?
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