У меня возникли проблемы с поиском запроса для отображения только последовательных дат (минимум 3) в SQL. После поиска обмена стеками есть несколько решений, но я не могу заставить их работать именно так, как я этого хочу. Рассмотрим следующую таблицу (фактические данные и имена таблиц изменены в целях безопасности):Найти все последовательные даты в SQL
code food date
------ ------ ------
ABC123 Sushi 09/28/2013
ABC123 Sushi 09/29/2013
ABC123 Sushi 09/30/2013
ABC123 Sushi 10/01/2013
BCD234 Burger 10/05/2013
BCD234 Burger 10/10/2013
BCD234 Burger 10/27/2013
BCD234 Fries 10/05/2013
BCD234 Fries 10/06/2013
BCD234 Fries 10/10/2013
CDE345 Steak 10/15/2013
CDE345 Steak 10/16/2013
CDE345 Steak 10/17/2013
CDE345 Steak 10/19/2013
CDE345 Steak 10/20/2013
DEF456 Pasta 09/05/2013
DEF456 Pasta 09/06/2013
DEF456 Pasta 09/10/2013
DEF456 Burrito 09/09/2013
DEF456 Burrito 09/10/2013
DEF456 Burrito 09/11/2013
Только это должно быть отображено:
code food date
------ ------ ------
ABC123 Sushi 09/28/2013
ABC123 Sushi 09/29/2013
ABC123 Sushi 09/30/2013
ABC123 Sushi 10/01/2013
CDE345 Steak 10/15/2013
CDE345 Steak 10/16/2013
CDE345 Steak 10/17/2013
DEF456 Burrito 09/09/2013
DEF456 Burrito 09/10/2013
DEF456 Burrito 09/11/2013
Учитывая, что код, продукты питания, дата и все переменной в любой данный время, какой будет запрос для создания результата, как показано выше? Запрос должен найти только минимум 3 последовательных дат для каждого заданного кода и пары продуктов (ключ).
Я пытался возиться с одним из запросов на Stack Exchange Server:
select code, grp, count(*) as NumInSequence, min(date), max(date)
from (select t.*, (date - row_number() over (partition by code order by date)) as grp
from #TempTable t
) t
group by code, grp
... но я получаю ошибку о преобразовании типов данных VARCHAR в BigInt (что, вероятно, связано с кодом является алфавитно-цифровых против простого регулярного идентификатора int). Кроме того, я предполагаю, что приведенный выше код не даст мне точного результата.
Просьба проконсультироваться и поблагодарить вас за помощь.
Хм, может быть, я сегодня замедлился, но не ясно, как вы от первой таблицы до второй (более сжатой) таблицы – Coffee
ах это 'минимум 3 последовательных дат для каждого заданного кода и пары продуктов (ключ)' – Coffee