【发布时间】:2016-03-16 19:11:32
【问题描述】:
我有一个包含列的表:名称、开始日期(日期值)和完成日期(日期值)。我想按名称组合日期,这样我就可以得到没有冲突的总时间。所以,如果我有一张桌子
name | start date | finish date
===============================
a | 20/10/2015 | 22/10/2015
a | 21/10/2015 | 22/10/2015
a | 26/10/2015 | 27/10/2015
因此,如果我按名称分组,则 3 行将聚合,如果我只是添加每行的 DATEDIFF 天,我将得到 4,如果我计算 MIN 开始日期和 MAX 结束日期之间的 DATEDIFF,它将是7,实际上正确答案是 3,因为第二行与第一行发生冲突,我只需要计算一次。
【问题讨论】:
-
这在 SQL 中是否可行?我对 SQL 不太了解,但我怀疑这可能是不可能的
-
这实际上更复杂,乍一看可能看起来更复杂。查看这些可能重复的问题:stackoverflow.com/questions/34072016/contiguous-dates 和 stackoverflow.com/questions/29549117/…
-
你用的是什么数据库?
标签: sql sql-server-2008 group-by sum sqldatetime