I'm trying to avoid having to use a loop, your suggestion would require a loop through each skill set type. Trying to keep it as one query.
Could it be possible in the FROM?
SELECT tblDenyActivity.DenyDateUserID, tblDenyActivity.DenyDate FROM dbo.tblActivity AS tblDenyActivity INNER JOIN
dbo.tblUserData ON tblDenyActivity.DenyDateUserID = dbo.tblUserData.UserID AND tblDenyActivity.InvalidDate IS NULL AND (SELECT dbo.tblSkillsetType.SQLSnippet FROM dbo.tblSkillsetType WHERE dbo.tblSkillsetType.SkillsetTypeID = tblExpectations.SkillsetTypeID) INNER JOIN dbo.tblUserSkillset ON dbo.tblUserData.UserID = dbo.tblUserSkillset.UserID INNER JOIN dbo.tblSkillsetType ON dbo.tblUserSkillset.SkillsetTypeID = dbo.tblSkillsetType.SkillsetTypeID
tblExpectations.SkillsetTypeID is from the larger dynamic query.
No worries on the SQL injection, string is parsed by the application before being sent to the sp.