There is probalby a better way to solve this, but maybe this will help:DECLARE @Toll TABLE(Customer_ID INT, Toll_Count INT, Toll_Date VARCHAR(20))INSERT @Toll Values(12345, 1, 'Jan 2011'),(12345, 2, 'Feb 2011'),(12345, 0, 'March 2011'),(12345, 1, 'April 2011'),(43567, 1, 'Jan 2011'),(43567, 2, 'Feb 2011'),(43567, 0, 'March 2011'),(43567, 1, 'April 2011')SELECT COUNT(DISTINCT A.Customer_ID)FROM ( SELECT A1.* FROM (SELECT * FROM @Toll WHERE Toll_Date = 'Jan 2011') AS A1 INNER JOIN (SELECT * FROM @Toll WHERE Toll_Date = 'Jan 2011') AS A2 ON A1.Customer_ID <> A2.Customer_ID AND A1.Toll_Count = A2.Toll_Count ) AS AINNER JOIN ( SELECT A1.* FROM (SELECT * FROM @Toll WHERE Toll_Date = 'Feb 2011') AS A1 INNER JOIN (SELECT * FROM @Toll WHERE Toll_Date = 'Feb 2011') AS A2 ON A1.Customer_ID <> A2.Customer_ID AND A1.Toll_Count = A2.Toll_Count ) AS B ON A.Customer_ID = B.Customer_IDINNER JOIN ( SELECT A1.* FROM (SELECT * FROM @Toll WHERE Toll_Date = 'March 2011') AS A1 INNER JOIN (SELECT * FROM @Toll WHERE Toll_Date = 'March 2011') AS A2 ON A1.Customer_ID <> A2.Customer_ID AND A1.Toll_Count = A2.Toll_Count ) AS C ON B.Customer_ID = C.Customer_IDINNER JOIN ( SELECT A1.* FROM (SELECT * FROM @Toll WHERE Toll_Date = 'April 2011') AS A1 INNER JOIN (SELECT * FROM @Toll WHERE Toll_Date = 'April 2011') AS A2 ON A1.Customer_ID <> A2.Customer_ID AND A1.Toll_Count = A2.Toll_Count ) AS D ON C.Customer_ID = D.Customer_ID