Без использования сводных запросов вы также можете присоединиться к подзапросу следующим образом:
SELECT t.id, MAX(key_1.value) AS '1', MAX(key_3.value) AS '2'
FROM tb t
INNER JOIN (SELECT id, value FROM tb WHERE `key` = 1) key_1 ON (key_1.id = t.id)
INNER JOIN (SELECT id, value FROM tb WHERE `key` = 3) key_3 ON (key_3.id = t.id)
GROUP BY t.id;
Контрольный пример (в MySQL):
CREATE TABLE tb (`id` int, `key` int, `value` char(2));
INSERT INTO tb VALUES (1, 1, 'ab');
INSERT INTO tb VALUES (1, 2, 'cd');
INSERT INTO tb VALUES (1, 3, 'ef');
INSERT INTO tb VALUES (2, 1, 'gh');
INSERT INTO tb VALUES (2, 2, 'ij');
INSERT INTO tb VALUES (2, 3, 'kl');
Результат:
+------+------+------+
| id | 1 | 2 |
+------+------+------+
| 1 | ab | ef |
| 2 | gh | kl |
+------+------+------+
2 rows in set (0.04 sec)