MySQLでのROLLUPの代替方法
今日MySQLからデータを抽出して、ROLLUP統計を使った後に、データの左の列の中でプロジェクトの名称を参加したいと思って、SQLを使います
結果は次のとおりです.
このように
+----------+-------------+| PLAYERNO | SUM(AMOUNT) |+----------+-------------+| 6 | 100.00 || 8 | 25.00 || 27 | 175.00 || 44 | 130.00 || 104 | 50.00 || NULL| 480.00 |+----------+-------------+6 rows in set, 1 warning (0.00 sec)
空の値として表示され、次のように変更されます.
結果を表示:
+----------+-------------+| PLAYERNO | SUM(AMOUNT) |+----------+-------------+| 6 | 100.00 || 8 | 25.00 || 27 | 175.00 || 44 | 130.00 || 104 | 50.00 || TOTAL | 480.00 |+----------+-------------+6 rows in set (0.00 sec)
表示できてもROLLUPの簡潔さを失って、もっと良い方法はありませんか?
SELECT (CASE WHEN ISNULL(PLAYERNO) THEN PLAYERNO='TOTAL' ELSE PLAYERNO END) AS PLAYERNO,SUM(AMOUNT) FROM penalties
GROUP BY PLAYERNO WITH ROLLUP
結果は次のとおりです.
このように
+----------+-------------+| PLAYERNO | SUM(AMOUNT) |+----------+-------------+| 6 | 100.00 || 8 | 25.00 || 27 | 175.00 || 44 | 130.00 || 104 | 50.00 || NULL| 480.00 |+----------+-------------+6 rows in set, 1 warning (0.00 sec)
空の値として表示され、次のように変更されます.
SELECT PLAYERNO,SUM(AMOUNT) FROM penalties
GROUP BY PLAYERNO
UNION
SELECT 'TOTAL',SUM(AMOUNT)
FROM penalties
結果を表示:
+----------+-------------+| PLAYERNO | SUM(AMOUNT) |+----------+-------------+| 6 | 100.00 || 8 | 25.00 || 27 | 175.00 || 44 | 130.00 || 104 | 50.00 || TOTAL | 480.00 |+----------+-------------+6 rows in set (0.00 sec)
表示できてもROLLUPの簡潔さを失って、もっと良い方法はありませんか?