declare @domestic INT declare @TypeId INT set @domestic=1 -- passed as parameter DECLARE @Column2Get1 CHAR(20) DECLARE @Column2Get2 CHAR(20) DECLARE @Column2Get3 CHAR(20) DECLARE @Column2Get4 CHAR(20) SET @Column2Get3='' SET @Column2Get4='' DECLARE @sSQL NVARCHAR(500) DECLARE @retval INT IF @domestic=1 BEGIN set @Column2Get1='fname_dom_bmk' set @Column2Get2='fname_dom_mdn' END ELSE BEGIN set @Column2Get1='fname_intl_bmk' set @Column2Get2='fname_intl_mdn' END -- Query #1 to get the names of the columns from SubTypes lookup table SET @sSQL = N'SELECT table_w_data, @Column2Get3=' + @Column2Get1 + ', @Column2Get4=' + @Column2Get2 + CHAR(13) SET @sSQL = @sSQL + 'FROM dbo.SubTypes ' + CHAR(13) SET @sSQL = @sSQL + 'WHERE SubTypeId=' + CONVERT(char(2), @TypeId) --select @sSQL -- to test EXECUTE sp_executesql @sSQL -- Query #2 to get the values of the desired columns from Benchmarks lookup table (simplified WHERE clause from original) -- table (simplified): ItemId (Int), DomC2SBmk (Int), DomC2SMdn (Int), IntlC2SBmk (Int), IntlC2SMdn (Int), ... SET @sSQL = N'SELECT ' + @Column2Get3 + ',' + @Column2Get4 + CHAR(13) SET @sSQL = @sSQL + 'FROM dbo.Benchmarks ' + CHAR(13) SET @sSQL = @sSQL + 'WHERE (ItemId=5) 'Questions: