Something like this?-- Prepare sample dataDECLARE @NutDef TABLE (NutrientID INT, NutrientName VARCHAR(20))INSERT @NutDefSELECT 4, 'Natrium' UNION ALLSELECT 6, 'Water'DECLARE @FoodDef TABLE (FoodID INT, FoodName VARCHAR(20))INSERT @FoodDefSELECT 5, 'Salt' UNION ALLSELECT 9, 'Cucumber'DECLARE @Nutrients TABLE (FoodID INT, NutrientID INT, Value SMALLMONEY)INSERT @NutrientsSELECT 5, 4, .83 UNION ALLSELECT 9, 4, .01 UNION ALLSELECT 9, 6, .98-- Prepare parametersDECLARE @Val1 INT, @Val2 INT, @Val3 INT, @Val4 INT, @Val5 INT, @Val6 INTSELECT @Val1 = 6, @Val2 = 0, @Val3 = 0, @Val4 = 0, @Val5 = 4, @Val6 = 0-- Show the expected outputSELECT hi.FoodID, fd.FoodNameFROM ( SELECT FoodID, ROW_NUMBER() OVER (PARTITION BY FoodID ORDER BY Value DESC) AS HighRec FROM @Nutrients WHERE NutrientID IN (@Val1, @Val2, @Val3) ) AS hiINNER JOIN ( SELECT FoodID, ROW_NUMBER() OVER (PARTITION BY FoodID ORDER BY Value) AS LowRec FROM @Nutrients WHERE NutrientID IN (@Val4, @Val5, @Val6) ) AS lo ON lo.FoodID = hi.FoodIDINNER JOIN @FoodDef AS fd ON fd.FoodID = hi.FoodIDWHERE hi.HighRec = 1 AND lo.LowRec = 1
Peter LarssonHelsingborg, Sweden