DECLARE @t TABLE (booknumber int, Ticketbook int, status char(1)) INSERT INTO @t SELECT 1, 1,'Y' UNION ALL SELECT 1,2, 'Y' UNION ALL SELECT 1,4, 'Y' UNION ALL SELECT 1,5, 'N' UNION ALL SELECT 1,6, 'N' UNION ALL SELECT 1,7, 'N' UNION ALL SELECT 1,9, 'N' UNION ALL SELECT 1,10, 'Y' UNION ALL SELECT 1,11, 'Y' UNION ALL SELECT 1,12, 'Y' UNION ALL SELECT 1,13, 'N' UNION ALL SELECT 1,3, 'Y' UNION ALL SELECT 1,14, 'N' UNION ALL SELECT 1,15, 'N' UNION ALL SELECT 1,16, 'N' UNION ALL SELECT 1,17, 'N' UNION ALL SELECT 1,18, 'N' UNION ALL SELECT 1,8, 'N' UNION ALL SELECT 1,19, 'N' UNION ALL SELECT 1,21, 'N' UNION ALL SELECT 1,22, 'N' UNION ALL SELECT 1,23, 'N' UNION ALL SELECT 1,24, 'N' UNION ALL SELECT 1,25, 'N' UNION ALL SELECT 1,20, 'N' SELECT booknumber, Ticketbook, status , null as gid INTO ##T FROM @t ORDER BY Ticketbook DECLARE @i int SET @i=0 UPDATE a SET @i= CASE WHEN a.Status<>b.status THEN @i+1 ELSE @i END, gid= @i FROM ##T a LEFT JOIN ##T b On b.Ticketbook=a.Ticketbook-1 --SELECT booknumber, MIN(Ticketbook) as minTicketbook--, MAX(Ticketbook) as maxTicketbook FROM ##T--GROUP BY booknumber, status SELECT booknumber, status, MIN(Ticketbook) as minTicketbook, MAX(Ticketbook) as maxTicketbook FROM ##T GROUP BY booknumber,gid, status ORDER BY booknumber, gid, status DROP TABLE ##TThe link to the thread is http://forums.asp.net/p/1417268/3129677.aspx#3129677 .
>>>>>Ticket book status Min ticket Max ticket >>>>> 1 Y 1 4 >>>>> 1 N 5 9 >>>>> 1 Y 10 12 >>>>> 1 N 13 25 >>>>>>>>>>The query has the following list.
>>>>>select booknumber,status, min(ticket),max(ticket) from tickets >>>>>group by booknumber,status >>>>> >>>>>Ticket book status Min ticket Max ticket >>>>> 1 Y 1 12 >>>>> 1 N 5 25 >>>>>>>>>>
>>>>select T1.*, T2.* from Tickets T1 left Join Tickets T2 on T1.Book = T2.Book and T1.Status = T2.Status and T1.Ticket < T2.Ticket >>>>>>>>See what results you get by this and if you can somehow proceed from it. If not, I would use procedural code - it seems pretty straightforward.