DECLARE @tbl TABLE (
item CHAR(1)
,[date] DATETIME
)
SET DATEFORMAT dmy
INSERT INTO @tbl
SELECT 'A'
,'11/06/2014'
INSERT INTO @tbl
SELECT 'A'
,'12/06/2014'
INSERT INTO @tbl
SELECT 'A'
,'13/06/2014'
INSERT INTO @tbl
SELECT 'A'
,'14/06/2014'
INSERT INTO @tbl
SELECT 'A'
,'18/06/2014'
INSERT INTO @tbl
SELECT 'A'
,'19/06/2014'
INSERT INTO @tbl
SELECT 'A'
,'20/06/2014'
INSERT INTO @tbl
SELECT 'A'
,'25/06/2014';
WITH cte
AS (
SELECT *
,rn = row_number() OVER (
PARTITION BY item ORDER BY DATE
)
FROM @tbl
)
,rcte
AS (
SELECT *
,grp = 1
FROM cte
WHERE rn = 1
UNION ALL
SELECT c.*
,grp = CASE
WHEN r.DATE = c.DATE - 1
THEN r.grp
ELSE r.grp + 1
END
FROM rcte r
INNER JOIN cte c ON r.item = c.item
AND r.rn = c.rn - 1
)
SELECT item
,count(*)
,min(DATE)
,max(DATE)
FROM rcte
GROUP BY item
,grp