Mysql 5.6 で以下のようなテーブルがあるとして
day | user_id | price |
---|---|---|
20190310 | 1 | 100 |
20190310 | 2 | 200 |
20190310 | 3 | 300 |
20190311 | 1 | 400 |
20190311 | 2 | 500 |
20190311 | 3 | 600 |
20190312 | 1 | 700 |
これを
こんな感じに表示することってできますでしょうか?
day | user_id1 | user_id2 | user_id3 |
---|---|---|---|
20190310 | 100 | 200 | 300 |
20190311 | 400 | 500 | 600 |
20190312 | 700 | 0 | 0 |
累計 | 1200 | 700 | 900 |
下記のSQL文で理想に近しいものは出来ましたが、
priceが0x343422 の様な表記になってしまう事と、
user_idの数だけカラムを追加しなければならないのを何とかしたいです。
どなたかよろしくお願いします。
Mysql
1SELECT 2day, 3group_concat(if(t.user_id=1, n.price, null)) AS '1', 4group_concat(if(t.user_id=2, n.price, null)) AS '2', 5group_concat(if(t.user_id=3, n.price, null)) AS '3' 6FROM table AS t 7GROUP BY day 8UNION ALL 9SELECT 10'累計', 11SUM(CASE WHEN t2.user_id = 1 THEN t2.price ELSE 0 END) AS '1', 12SUM(CASE WHEN t2.user_id = 2 THEN t2.price ELSE 0 END) AS '2', 13SUM(CASE WHEN t2.user_id = 3 THEN t2.price ELSE 0 END) AS '3' 14FROM table AS t2;

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/18 11:31