如何在MySQL中透视此表

如何在MySQL中透视此表,mysql,pivot-table,Mysql,Pivot Table,您将如何在MySQL中透视此表?它是按日期说明订购的 +--------+----------+-----------+ | grpid | status | msg | +--------+----------+-----------+ | 1 | OK | text6 | | 1 | PROGRESS | text5 | | 1 | PROGRESS | text4 | | 2 | FAIL

您将如何在MySQL中透视此表?它是按日期说明订购的

+--------+----------+-----------+
| 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