-
Erland Sommarskog 77,581 Reputation points MVP
2022-10-28T22:19:01.547+00:00 Here is a query (and my test setup):
CREATE TABLE #ullig (id int NOT NULL, date date NOT NULL, cnt int NOT NULL) INSERT #ullig (id, date, cnt) VALUES (215251, '1/23/2021' , 0 ), (215251, '2/20/2021' , 0 ), (215251, '3/23/2021' , 0 ), (215251, '4/22/2021' , 17 ), (215251, '5/23/2021' , 0 ), (215251, '6/22/2021' , 0 ), (215251, '7/23/2021' , 0 ), (215251, '8/23/2021' , 0 ), (215251, '9/22/2021' , 0 ), (215251, '10/25/2021' , 0 ), (215251, '11/22/2021' , 0 ), (215251, '12/23/2021' , 0 ), (215251, '1/24/2022' , 18 ), (215251, '2/22/2022' , 46 ), (215251, '3/23/2022' , 0 ), (215251, '4/22/2022' , 0 ), (215251, '5/23/2022' , 18 ), (215251, '6/22/2022' , 48 ), (215251, '7/25/2022' , 79 ), (215251, '8/23/2022' , 110 ), (215251, '9/22/2022' , 140 ), (215251, '10/24/2022' , 171 ) go SELECT *FROM #ullig go WITH numbering AS ( SELECT id, date, cnt, row_number () OVER (PARTITION BY id, cnt ORDER BY date DESC) AS rownobycnt FROM #ullig ), addlead AS ( SELECT *, lead(date) OVER(PARTITION BY id ORDER BY date) AS nextdate FROM numbering ) SELECT nextdate AS thedate FROM addlead WHERE rownobycnt = 1 AND cnt = 0 go DROP TABLE #ullig
;WITH cte AS (
SELECT ID, printed_date, [count],
row_number () OVER (PARTITION BY ID ORDER BY date desc)
-row_number () OVER (PARTITION BY ID, case when [count]=0 then 0 else 1 end ORDER BY date desc ) AS delta
FROM yourtable
)
SELECT ID,min(printed_date) dt
FROM cte
where delta=0
group by ID, delta
--Modified query.