Sql server 如何从日期列表创建日期范围
我试着寻找我问题的答案,但是前面提到的所有场景都略有不同。如果我错过了一个能回答这个问题的,我道歉 我有一张这样的桌子:Sql server 如何从日期列表创建日期范围,sql-server,sql-server-2012,Sql Server,Sql Server 2012,我试着寻找我问题的答案,但是前面提到的所有场景都略有不同。如果我错过了一个能回答这个问题的,我道歉 我有一张这样的桌子: ID Date 35 2015-06-01 35 2015-06-02 35 2015-06-03 35 2015-06-06 40 2015-06-07 40 2015-06-08 40 2015-06-09 40 2015-06-10 40 2015-06-13 35 2015-06-14 35 2015-06-15 35 2015-06-
ID Date
35 2015-06-01
35 2015-06-02
35 2015-06-03
35 2015-06-06
40 2015-06-07
40 2015-06-08
40 2015-06-09
40 2015-06-10
40 2015-06-13
35 2015-06-14
35 2015-06-15
35 2015-06-16
35 2015-06-17
我想把它写在以下表格中:
ID DateFrom DateTo
35 2015-06-01 2015-06-07
40 2015-06-07 2015-06-14
35 2015-06-14 2015-06-18
然而,我能想到的或见过的每个解决方案(row_number()、min/max、lag等)都只返回以下结果
ID DateFrom DateTo
35 2015-06-01 2015-06-18
40 2015-06-07 2015-06-14
i、 e ID 35的日期范围取第一个表中日期的最小值和最大值。看起来这应该很容易,但我完全被卡住了
谢谢
Tom您可以使用
行数
和最小值
和最大值
执行此操作:
结果
| ID | DateFrom | DateTo |
|----|------------|------------|
| 35 | 2015-06-01 | 2015-06-06 |
| 40 | 2015-06-07 | 2015-06-13 |
| 35 | 2015-06-14 | 2015-06-17 |
第一行的
DateTo
不是应该是2015-06-30
?这是mysql还是sql server?这会对方法产生影响。例如,这个链接向您展示了如何检查下一个值:如果您想要连续ID的日期范围,我认为您需要这样做。是否所有ID 35都有四行,而所有40都有五行?为什么您想要更改ID的第一个日期?太棒了!这太完美了。感谢Felix这不仅解释了构建日期范围,还解释了其他数据范围。
| ID | DateFrom | DateTo |
|----|------------|------------|
| 35 | 2015-06-01 | 2015-06-06 |
| 40 | 2015-06-07 | 2015-06-13 |
| 35 | 2015-06-14 | 2015-06-17 |