declare @cUserName nvarchar(50) set @cUserName = 'danielm' select * from ( select a.iIpoID, a.cGroupDealID, b.cIpoStatus, a.dTargetLiveDate , a.cCustNo, a.cCompany , (select cName from ipo_dsiContact where iIpoID = a.iIpoID and cDsiContType = 'IS') as cNameIS , (select cName from ipo_dsiContact where iIpoID = a.iIpoID and cDsiContType = 'TSS') as cNameTSS , (select cName from ipo_dsiContact where iIpoID = a.iIpoID and cDsiContType = 'CFA') as cNameCFA , c.cUserName, c.cPermission, a.dCreate from ipo a join lookup_ipoStatus b on a.iIpoStatus = b.iIpoStatus join ipo_permission c on a.iIpoID = c.iIpoID ) q where cUserName = @cUserName and Year(dCreate) = 2007 order by q.iIpoId DESCUPDATE: Also that query could be build to be much faster :-)