请参阅下表,您可以看到日期,分配和phs
Ops Day Date St.Time End TimeCls Phs
A 1 13.11.2015 4:45 6:30 PP RXXX
A 1 13.11.2015 6:30 12:00 PP RXXX
A 1 13.11.2015 12:00 18:00 PP RXXX
A 3 15.11.2015 1:00 3:00 CN RXXX
A 3 15.11.2015 3:00 8:00 CN RXXX
A 3 15.11.2015 8:00 10:30 PP RXXX
A 3 15.11.2015 10:30 12:00 PP RXXX
A 4 16.11.2015 15:30 16:00 PP CXXX
A 4 16.11.2015 16:00 18:30 PP CXXX
A 4 16.11.2015 23:30 23:59 PN CXXX
A 5 17.11.2015 0:00 0:15 PN CXXX
A 5 17.11.2015 0:15 0:45 PP CXXX
A 5 17.11.2015 0:45 1:15 PP CXXX
A 5 17.11.2015 1:15 1:30 PP CXXX
A 5 17.11.2015 1:30 2:00 PP CXXX
现在我想让查询的输出像这样
这意味着如果Phs,Cls在运行日期内是相同的,那么它应该被分组成一个序列。如果Phs有不同的Cls,那么另一个序列。或者即使Phs和Cls与之前的相同,但它来自不同的Cls或Phs。它应该分组到下一个序列。
日期基本上应该构成序列,但是当phs和cls或者phs和cls都不同时,它会创建另一个序列
分组后的预期结果
Ops Day Date Strt Time End timeCls Phs Seq
A 1 13.11.2015 4:45 6:30 PP RXXX 1
A 3 15.11.2015 1:00 3:00 CN RXXX 2
A 3 15.11.2015 8:00 10:30 PP RXXX 3
A 4 16.11.2015 15:30 16:00 PP CXXX 4
A 4 16.11.2015 23:30 23:59 PN CXXX 5
A 5 17.11.2015 0:15 0:45 PP CXXX 6
答案 0 :(得分:0)
试试这个
SELECT
*, @Seq:=@Seq + 1 AS `Seq`
FROM
(SELECT
`Ops`, `Day`, `Date`, `Start`, `End`, `Phs`
FROM
`yourtable`
GROUP BY `Day` , `Date` , `Cls` , `Phs`) tblresults,
(SELECT @Seq:=0) tblSeq;