What do you mean infinite loop?the query does not have any obvious problems.SELECT DISTINCT dbo.CardHolderTable.LastName, dbo.CardHolderTable.FirstName, dbo.CardHolderTable.CardID, MAX(CASE WHEN CardHolderPersonalDataXrTable.PersonalDataID = 0 THEN CardHolderPersonalDataXrTable.PersonalDataItem END) AS Department, MAX(CASE WHEN CardHolderPersonalDataXrTable.PersonalDataID = 1 THEN CardHolderPersonalDataXrTable.PersonalDataItem END) AS Supervisor, MAX(CASE WHEN BadgeFormatTable.BadgeFormatID IN (1, 2 , 3 , 4 ,5 ,6,7,8,15,16, 17,18 ,19,21 , 22) THEN BadgeFormatTable.BadgeName END) AS BadgeName, dbo.ReaderTable.ReaderID, dbo.ReaderTable.ReaderNameFROM dbo.CardHolderTable INNER JOINdbo.CardImageTable ON dbo.CardHolderTable.CardID = dbo.CardImageTable.CardID INNER JOINdbo.CardHolderPersonalDataXrTable ON dbo.CardHolderTable.CardID = dbo.CardHolderPersonalDataXrTable.CardID INNER JOINdbo.BadgeFormatTable ON dbo.CardImageTable.BadgeFormatID = dbo.BadgeFormatTable.BadgeFormatID INNER JOINdbo.AccessGroupReaderXrTable ON dbo.BadgeFormatTable.RegionID = dbo.AccessGroupReaderXrTable.RegionID INNER JOINdbo.ReaderTable ON dbo.AccessGroupReaderXrTable.ReaderID = dbo.ReaderTable.ReaderIDGROUP BY dbo.CardHolderTable.LastName, dbo.CardHolderTable.FirstName, dbo.CardHolderTable.CardID, dbo.ReaderTable.ReaderID, dbo.ReaderTable.ReaderName