Here are two ways, given the sample data, assuming that there can only be one value for every combination of f1
+ flag
:
SELECT f1,
f2WhenFlagIs1 = MAX(CASE WHEN flag = 1 THEN f2 END),
f2WhenFlagIs0 = MAX(CASE WHEN flag = 0 THEN f2 END)
FROM dbo.TEST
GROUP BY f1;
Or
SELECT f1, f2WhenFlagIs1 = [1], f2WhenFlagIs0 = [0]
FROM dbo.TEST AS t
PIVOT (MAX(f2) FOR flag IN ([0],[1])) AS p;
If you can have more than one value for any given f1
, flag
pair, you'll need to better define your desired results.