I think this is what you are after:DECLARE @Case TABLE (Case_ID INT, Assignment_Date DATETIME, Queue_ID INT)INSERT @CaseSELECT 2677490, '2008-04-02 16:15:53.480', 1661UNION ALL SELECT 2677490, '2008-04-03 09:14:20.690', 1062UNION ALL SELECT 2678373, '2008-04-02 16:38:06.153', 1947UNION ALL SELECT 2678373, '2008-04-02 16:40:08.027', 1656UNION ALL SELECT 2678373, '2008-04-03 09:36:56.923', 1083UNION ALL SELECT 2678386, '2008-04-02 16:38:25.777', 68064UNION ALL SELECT 2678386, '2008-04-02 16:39:56.277', 1661UNION ALL SELECT 2678386, '2008-04-03 09:05:15.940', 1354UNION ALL SELECT 2678386, '2008-04-03 09:37:08.500', 601UNION ALL SELECT 2679229, '2008-04-02 17:05:24.653', 101UNION ALL SELECT 2679229, '2008-04-02 17:05:25.997', 1656SELECT Case_ID, Assignment_Date, Queue_IDFROM ( SELECT *, ( SELECT MIN(Assignment_Date) FROM @Case AS T WHERE T.Case_ID = A.Case_ID AND T.Assignment_Date > A.Assignment_Date ) AS NextDate FROM @Case AS A ) AS TempWHERE CAST('2008-04-03 07:00:00' AS DATETIME) BETWEEN Assignment_Date AND NextDate AND Queue_ID IN (1656, 1661)
EDIT: reformated for screen width. :)