查询数据到一行

Querying data to one row

我有一些数据结构如下:

+-----------+-------------+--------+
|    id     | question_id | answer |
+-----------+-------------+--------+
| 101827402 |         123 | All    |
| 101827402 |         456 | Yes    |
| 101827408 |         123 | All    |
| 101827408 |         456 | No     |
+-----------+-------------+--------+

我试图根据 id 字段将数据放入一行,每个对应的答案都是一行。所以我想要的输出看起来是这样的:

+-----------+---------+---------+
|    id     | answer1 | answer2 |
+-----------+---------+---------+
| 101827402 | All     | Yes     |
| 101827408 | All     | No      |
+-----------+---------+---------+

我已经尝试 运行 以下查询,但它没有产生我正在寻找的结果:

SELECT id, 
CASE WHEN question_id = 123 THEN answer END answer1, 
CASE WHEN question_id = 456 THEN answer END answer2 
FROM 
test_data

returns 结果看起来是这样的:

+-----------+---------+---------+
|    id     | answer1 | answer2 |
+-----------+---------+---------+
| 101827402 | All     | NA      |
| 101827402 | NA      | Yes     |
| 101827408 | All     | NA      |
| 101827408 | NA      | No      |
+-----------+---------+---------+

我如何将它输出到与此处发布的第二个 table 相匹配的我想要的输出?

尝试用聚合包裹它:

SELECT id, 
MAX(CASE WHEN question_id = 123 THEN answer END) answer1, 
MAX(CASE WHEN question_id = 456 THEN answer END) answer2 
FROM test_data
GROUP BY id