Предыдущие типы для закрытых сценариев
Это должно быть легко, но я сталкиваюсь со всеми типами неприятностей, пытаясь понять это. Здесь у меня есть следующие поля: Store ID, Person_id, type_id, Type, creation_at, start_date.
Идентификатор хранилища Person_id type_id Тип созданного_на начальном_дате
13458 11146402 1 Отмечено 18.12.07 14:39 18.12.2007
13458 11146402 6 Принято 14.03.08 19:15 3/14/2008
13458 11146402 7 Закрыто 03.04.08 17:18 03.04.2008
13458 11146402 1 Сообщено 3/4/08 18:36 4/3/2008
13458 11146402 3 Обзор 4/3/08 18:36 4/3/2008
13458 11146402 7 Закрыто 12.09.09 в 5:00 утра 09.09.2009
13458 11146402 1 Отмечено 3.02.10 20:54 3.03.2010
13458 11146402 3 Review 3/3/10 20:54 3/3/2010
13458 11146402 9 Предзаказ 18.11.10 20:54 18.11.2010
13458 11146402 7 Закрыто 18.11.10 20:54 18.11.2010
13458 11146402 3 Отзыв 16.06.16 16:34 4/7/2011
13458 11146402 7 Закрыто 16.06.16 16:34 13.06.2016
13458 11146402 1 Отмечено 3.02.10 20:54 3.03.2010
13458 11146402 3 Отзыв 18.11.17 20:54 3.03.2017
13458 11146402 10 Завершено 18.11.17 20:54 18.11.2017
13458 11146402 7 Закрыто 18.11.17 20:54 18.02.2008
13458 11146402 1 Отмечено 3/3/10 8:54 3/3/2010
13458 11146402 3 Review 3/3/10 13:54 3/3/2010
13458 11146402 7 Закрыто 3.03.10 16:54 3.03.2010
Замечания:
В том же магазине, что и у меня, и у того же человека, у меня разные сценарии. Здесь мне нужны все записи, чей источник type = 'Closed', но их предыдущий type_id должен быть одним из (3,9,10). Просто FYI…… type_id = 1 является началом соответствующего эпизода, а type = 7 является концом соответствующего эпизода, и могут быть случаи, когда он может не начинаться с type_id = 1, но может быть непосредственно с (3, 9, 10), а затем закрыть с type_id = 7. А также нам нужно удалить, если он начинается type_id = 1 и заканчивается type_id = 7 в течение 24 часов.
Вот запрос, который я пробовал:
; СО закрыто как (
SELECT *, ROW_NUMBER () OVER (PARTITION BY store_id, person_id ORDER BY созданный_at) N
FROM # Temp_P1_SK
ГДЕ type_id = 7
)
SELECT c.store_id, c.person_id, c.type_id, c.created_at, c.startdate, P.type_id AS P_type_id
ОТ закрытого с
ЛЕВОЕ СОЕДИНЕНИЕ закрыло p на c.store_id=p.store_id и c.person_id=p.person_id и cN=pN + 1
Примечание: здесь мы не можем взять минимум идентификатора типа, потому что они не назначены в порядке. Даже мы не можем взять минимум созданной даты, потому что они могут создавать все один раз и заднюю дату начала задавать соответствующим образом. Окончательный результат из этого примера должен быть четырьмя записями с источником type = 'closed' с датой начала соответствующей даты начала соответствующего эпизода.
Окончательный вывод:
Идентификатор хранилища Person_id type_id Тип Pre_type_id Pre_Type start_date Pre_start_date
13458 11146402 7 Закрыто 3 Обзор 9/9/2009 4/3/2008
13458 11146402 7 Закрыто 9 Закрыто 18.11.2010 18.11.2010
13458 11146402 7 Закрыто 3 Отзыв 13.06.2016, 04.07.2011
13458 11146402 7 Закрыто 10 Завершено 18.02.2008 18.11.2017