Sql 分组重叠日期

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的规划和稳定将在同一周内完成 应用程序处理得很好。我的问题在于我正在尝试创建一份报告。我希望它在

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

我正在使用SQL Server 2012

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

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

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

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

以下是我得到的反馈,显示了我的问题:

从4号到9号,规划和稳定是重叠的

我想让查询做的是,使用一个组,可能会返回第二个描述:“规划/稳定”作为重叠日期


但我不确定是否有一个有效的方法来做到这一点。这可以用一个组来完成吗,看看是否有一个计数>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