2012-05-11 15 views
0

このテーブルをMySQLでどのようにピボットするのですか?それは日付descによって順序付けられます。このフォームへ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 | 
+--------+----------+-------------------+ 
+0

どこ 'date'フィールドがありますか? – Devart

答えて

0

これは、それがGROUP_CONCAT()を使用してGROUP BYだ、ピボットではありません。

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

問題は、これはステータス= PROGRESSの行を返します。 FAILまたはOKのステータスと適切なグループ化されたPROGRESS msgの行だけで、同じdialogId in progressの列が必要です。 – Mejmo

+0

@Mejmo:私の更新答えを見てください。これは、各グループに「OK」または「FAIL」ステータスが1つだけ表示されることを前提としています。そうでなければ、複数のステータスを処理する方法を定義する必要があります。 – eggyal

関連する問題