PFB скриптаНужна помощь, чтобы найти дату начала и дату окончания группы
CREATE TABLE LagLead
(
ID INT
,Flag TINYINT
,DateCreated DATETIME
)
GO
INSERT INTO LagLead
SELECT 100,0,'May 30 2000 11:37AM'
UNION ALL
SELECT 100,0,'May 30 2001 11:37AM'
UNION ALL
SELECT 100,0,'May 30 2002 11:37AM'
UNION ALL
SELECT 100,1,'May 30 2003 11:37AM'
UNION ALL
SELECT 100,1,'May 30 2004 11:37AM'
UNION ALL
SELECT 100,1,'May 30 2005 11:37AM'
UNION ALL
SELECT 100,0,'May 30 2006 11:37AM'
UNION ALL
SELECT 100,0,'May 30 2007 11:37AM'
UNION ALL
SELECT 100,0,'May 30 2008 11:37AM'
UNION ALL
SELECT 101,1,'May 30 2004 11:37AM'
UNION ALL
SELECT 101,1,'May 30 2005 11:37AM'
UNION ALL
SELECT 102,0,'May 30 2004 11:37AM'
Источник Таблица записей:
Мне нужно вывести что-то вроде выхода ниже запроса, но нужно избавиться от жесткого кода 2 и 9, который присутствует внутри скрипта. Благодаря
Ожидаемый результат:
Я попытался с помощью этого сценария, но нужно сделать это динамический (удалить жесткий код 2,9)
SELECT ID,Flag,Lag AS StartDate,Lead AS EndDate FROM
(
SELECT *
,CASE WHEN Flag != LEAD(Flag,1,9) OVER (PARTITION BY ID ORDER BY DateCreated) THEN 1 ELSE 0 END AS LeadFlag
,LAG(DateCreated,2,DateCreated) OVER (PARTITION BY ID ORDER BY DateCreated) AS Lag
,LEAD(DateCreated,1,DateCreated) OVER (PARTITION BY ID ORDER BY DateCreated) AS Lead
FROM LagLead
)src
WHERE LeadFlag = 1
It'a не обязательно использовать функцию Lag/lead.
Опишите свою проблему и ожидаемые результаты, а не просто дайте сценарий. –