如何在MySQL中透视此表
您将如何在MySQL中透视此表?它是按日期说明订购的如何在MySQL中透视此表,mysql,pivot-table,Mysql,Pivot Table,您将如何在MySQL中透视此表?它是按日期说明订购的 +--------+----------+-----------+ | grpid | status | msg | +--------+----------+-----------+ | 1 | OK | text6 | | 1 | PROGRESS | text5 | | 1 | PROGRESS | text4 | | 2 | FAIL
+--------+----------+-----------+
| grpid | status | msg |
+--------+----------+-----------+
| 1 | OK | text6 |
| 1 | PROGRESS | text5 |
| 1 | PROGRESS | text4 |
| 2 | FAIL | text3 |
| 2 | PROGRESS | text2 |
| 2 | PROGRESS | text1 |
+--------+----------+-----------+
在此表格中:
+--------+----------+-------------------+
| grpid | status | progress |
+--------+----------+-------------------+
| 1 | OK | text4,text5,text6 |
| 2 | FAIL | text1,text2,text3 |
+--------+----------+-------------------+
这不是一个轴心点,而是一个
分组依据
使用:
问题是,它仍然返回status=PROGRESS的行。我只需要状态为“失败”或“确定”的行以及相应的分组进度消息,该消息在“进度”列中具有相同的对话框ID。@Mejmo:请参阅我更新的答案;这假设每个组中只显示一个
OK
或FAIL
状态-否则,您需要定义希望如何处理多个此类状态。
SELECT grpid,
GROUP_CONCAT(CASE WHEN status IN ('OK','FAIL') THEN status END) AS status,
GROUP_CONCAT(msg) AS progress
FROM my_table
GROUP BY grpid