Что вам действительно нужно сделать, так это использовать комбинацию подходов к общим проблемам.
Сначала вам нужно использовать подход «Пробелы и острова», чтобы получить CTE или производную таблицу, которая выглядит следующим образом (используя сокращения и частичные данные для краткости):
Group Game Date Start End GroupSequence
Fr B-P 10/1 12:00 12:30 1
Fr B-W 10/1 12:30 1:00 1
Fr Y-P 10/1 3:45 5:00 2
GroupSequence
- это искусственный столбец, который вычисляется в CTE с использованием решения «Пробелы и острова».Все игры в одной группе в один и тот же день, которые менее чем за 30 минут от предыдущего end
до следующего start
, будут иметь одинаковые значения GroupSequence
.
Затем вы выбираете из этогоCTE, группировка по Group
, Date
и GroupSequence
, использование метода GROUP_CONCAT для построения столбца Games
и создание столбцов Time Range
с помощью MIN(Start)
и MAX(End)
.