我有一个相当复杂的查询,需要一些帮助。
基本上我的表有四个字段:
Start Date,
End Date,
Item,
Type
我还需要获取天数
为了正确地对它们进行分组,我需要查看每一行,并检查开始日期中的日期是否连续,是否将它们分组,如果不是则进入不同的组
因此,如果数据库中有以下日期:
2013-10-23
2013-10-24
2013-10-28
2013-10-29
然后它应该返回两行
2(number of days), 2013-10-23 (startdate) ,2013-10-24 (last consecutive date) , Item, Type
2,2013-10-28,2013-10-29,Item,Type
然后将事情带到更复杂的级别,分组需要基于 Item 和 Type 也是相同的
这就是以下数据(StartDate,Item,Type)
2013-10-23,ABC,EFG
2013-10-24,XYZ,WXY
2013-10-28,ABC,EFG
2013-10-29,ABC,EFG
那么前两个不会被分组,因为项目和/或类型彼此不同,即使日期是连续的。
然而,最后两个将组合在一起,因为日期是连续的,并且项目和类型彼此相同,需要的结果:
number of days startdate last consecutive date Item Type
1 2013-10-23 2013-10-23 ABC EFG
1 2013-10-24 2013-10-24 XYZ WXY
2 2013-10-28 2013-10-29 ABC EFG
我正在尝试使用 MySQL 执行此操作,我知道我可以在 PHP 的帮助下进行循环,但如果可能的话,最好在 MySQL 中执行此操作。
这是一个包含一些数据的 SQLFiddle。http://sqlfiddle.com/#!2/63383/1/0