add remove split language chart show hidden hide
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
5 rows affected
id1 id2 value1_id3=1 value2_id3=1 value1_id3=2 value2_id3=2 value1_id3=3 value2_id3=3
1 1 x11 x12 x21 x22 null null
2 1 x31 x32 x41 x42 x51 x52
SELECT YT.id1,
       YT.id2,
       MAX(CASE id3 WHEN '1' THEN YT.[value1] END) AS [value1_id3=1],
       MAX(CASE id3 WHEN '1' THEN YT.[value2] END) AS [value2_id3=1],
       MAX(CASE id3 WHEN '2' THEN YT.[value1] END) AS [value1_id3=2],
       MAX(CASE id3 WHEN '2' THEN YT.[value2] END) AS [value2_id3=2],
       MAX(CASE id3 WHEN '3' THEN YT.[value1] END) AS [value1_id3=3],
       MAX(CASE id3 WHEN '3' THEN YT.[value2] END) AS [value2_id3=3]
FROM dbo.YourTable YT
GROUP BY YT.id1, YT.id2;
Warning: Null value is eliminated by an aggregate or other SET operation.