 <p>An EXISTS operator might be faster than the subquery:</p> <pre><code>SELECT t1.Index, MIN(t1.[Date]), MAX(t1.[Date]) FROM myTable t1 WHERE EXISTS (SELECT * FROM myTable t2 WHERE t2.Index = t1.Index AND t2.[Date] &gt;= '1/1/2000' AND t2.[Date] &lt; '1/1/2001') GROUP BY t1.Index </code></pre> <p>It would depend on table size and indexing I suppose. I like G Mastros HAVING clause solution too.</p> <p>Another important note... if your date is actually a DATETIME and there is a time component in any of your dates (either now or in the future) you could potentially miss some results if an index had a date of 12/31/2000 with any sort of time besides midnight. Just something to keep in mind. You could alternatively use YEAR([Date]) = 2000 (assuming MS SQL Server here). I don't know if the DB would be smart enough to use an index on the date column if you did that though.</p> <p>EDIT: Added GROUP BY and changed date logic thanks to the comment</p>