1. EXECUTE ('SELECT street, city, state FROM Address WHERE customerID IN (' + @pkString + ')') EXECUTE ('SELECT orderID, amount FROM Orders WHERE customerID IN (' + @pkString + ')') -- Additional SELECTs... 2. CREATE TABLE #customerIDTable (customerID INT) DECLARE @StartIndex INT SET @StartIndex = 0 DECLARE @CustomerID VARCHAR(10) SET @CommaIndex = CHARINDEX(',', @pkString, @StartIndex) WHILE @CommaIndex > 0 BEGIN SET @CustomerID = LTRIM(SUBSTRING(@pkString, @StartIndex, @CommaIndex - @StartIndex)) INSERT #customerIDTable VALUES (@CustomerID) SET @StartIndex = @CommaIndex + 1 SET @CommaIndex = CHARINDEX(',', @pkString, @StartIndex) END -- This either gets the last pk in @pkString or the single -- customerID in @pkString SET @WarehouseID = LTRIM(SUBSTRING(@Warehouses, @StartIndex, @WarehousesLength - @StartIndex + 1)) INSERT #WarehouseIDs VALUES (@WarehouseID) SELECT add.street, add.city, add.state FROM Address add INNER JOIN #customerIDTable cidt ON add.customerID = cidt.customerID SELECT ord.orderID, ord.amount FROM Orders ord INNER JOIN #customerIDTable cidt ON ord.customerID = cidt.customerID -- Additional SELECTs... DROP TABLE #customerIDTableIs there a more efficient way? I doubt that the second option would pay off unless I was doing quite a few SELECTs. All the tables that I am JOINing them with are pretty big.