查询数据到一行
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
我有一些数据结构如下:
+-----------+-------------+--------+
| 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