• You probably want to do the grouping in the inner query rather than the outer query. Also, can limit parameter values to 1-4 in the inner query itself.

    SELECT a.BoxId, b.value1, b.value2, b.value3, b.value4

    FROM boxes a

    LEFT OUTER JOIN (

    SELECT boxid,

    MAX(CASE WHEN parameter = 1 THEN field1 END) AS value1,

    MAX(CASE WHEN parameter = 2 THEN field1 END) AS value2,

    MAX(CASE WHEN parameter = 3 THEN field1 END) AS value3,

    MAX(CASE WHEN parameter = 4 THEN field1 END) AS value4

    FROM widgets

    WHERE

    parameter BETWEEN 1 AND 4

    GROUP BY boxid

    ) AS b ON a.boxid = b.boxid

    SQL DBA,SQL Server MVP(07, 08, 09) A socialist is someone who will give you the shirt off *someone else's* back.