-- Выбираем все столбцы из вашей таблицы и добавляем два новых столбца:
-- NewGroup - показывает, начинается ли новая группа записей
-- GroupCount - показывает количество подряд идущих групп для каждой записи
SELECT
Date,
Check,
Time,
Product,
Qty,
Price,
-- Если предыдущая запись имеет ту же дату и чек, что и текущая, то это не новая группа
-- В противном случае, это новая группа
CASE
WHEN LAG(Date) OVER (ORDER BY Date, Time, Check) = Date AND LAG(Check) OVER (ORDER BY Date, Time, Check) = Check THEN 0
ELSE 1
END AS NewGroup,
-- Используем функцию SUM с условием для подсчета количества подряд идущих групп
SUM(CASE
WHEN LAG(Date) OVER (ORDER BY Date, Time, Check) = Date AND LAG(Check) OVER (ORDER BY Date, Time, Check) = Check THEN 0
ELSE 1
END) OVER (ORDER BY Date, Time, Check) AS GroupCount
FROM
YourTable
ORDER BY
Date, Time, Check
пример запроса для получения максимального числа подряд идущих записей для каждого дня
-- Используем подзапрос с предыдущим запросом для получения максимального числа подряд идущих групп для каждой даты
SELECT
Date,
MAX(GroupCount) AS MaxGroupCount
FROM (
SELECT
Date,
Check,
Time,
Product,
Qty,
Price,
-- Аналогично предыдущему запросу, создаем столбец NewGroup и используем функцию SUM с условием для подсчета количества подряд идущих групп
CASE
WHEN LAG(Date) OVER (ORDER BY Date, Time, Check) = Date AND LAG(Check) OVER (ORDER BY Date, Time, Check) = Check THEN 0
ELSE 1
END AS NewGroup,
SUM(CASE
WHEN LAG(Date) OVER (ORDER BY Date, Time, Check) = Date AND LAG(Check) OVER (ORDER BY Date, Time, Check) = Check THEN 0
ELSE 1
END) OVER (ORDER BY Date, Time, Check) AS GroupCount
FROM
YourTable
) t
-- Группируем по дате и выбираем максимальное значение GroupCount для каждой даты
GROUP BY
Date