DECLARE @contact TABLE (personID int, email varchar(150), type varchar(20)) DECLARE @t TABLE(personID int, type varchar(20)) INSERT INTO @contact (personID, email, type) SELECT 1, 'student1@school.com', 'student' UNION SELECT 2, 'teacher2@school.com', 'teacher' UNION SELECT 3, '', 'teacher' UNION SELECT 4, null, 'teacher' INSERT INTO @t(personID, type) SELECT 1, 'student' UNION SELECT 2, 'teacher' UNION SELECT 3, 'teacher' UNION SELECT 4, 'teacher' --This works fine.... SELECT * FROM (SELECT COALESCE(SUBSTRING(c.email,1, CHARINDEX('@', c.email)-1), '') UserName FROM @contact c INNER JOIN @t t ON c.personID=t.personID WHERE c.type='Student') subQuery WHERE subQuery.UserName<>'' --This generates an error.... SELECT * FROM (SELECT COALESCE(SUBSTRING(c.email,1, CHARINDEX('@', c.email)-1), '') UserName FROM @contact c INNER JOIN @t t ON c.personID=t.personID WHERE t.type='Student') subQuery WHERE subQuery.UserName<>''That appears to be the crux of my issue. Does anyone have an explanation?