如何在MySQL ROLLUP函数中替换NULL类别标题?

And*_*rew 7 php mysql rollup

使用下面的MySQL查询,我创建了一个数据透视表,这正是我正在寻找的.但是,我想用实际描述替换NULL值,例如SubTotal和GrandTotal.这是我的PHP输出上显示的数据透视表格式(希望格式化有点清晰!).

Name    Division 1  Division 2  Division 3  Division 4  Location
Name 1
Name 2
Name 3
NULL    Total       Total       Total       Total
Name 4
Name 5
NULL    Total       etc
NULL    Column Grand Total 
Run Code Online (Sandbox Code Playgroud)

这是我用来生成表的查询.在研究了这个问题后,CASE功能似乎就是这样.但是,当我将两个CASE行添加到下面的查询中时,它似乎不想工作.返回的mysql_error表示"GROUPING函数不存在".

SELECT 
CASE WHEN (GROUPING(name)=1) THEN 'MainTotal' ELSE name END AS name, 
CASE WHEN (GROUPING(location)=1) THEN 'SubTotal' ELSE location END AS location, 
name AS Name,
SUM(IF(division='OEM',totalHours,NULL)) AS OEM,
SUM(IF(division='A/M',totalHours,NULL)) AS AM,
SUM(IF(division='SKF',totalHours,NULL)) AS SKF,
SUM(IF(division='RE',totalHours,NULL)) AS RE,
location as Location
FROM $databasetable GROUP BY location, name 
WITH ROLLUP
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我做错了什么?CASE函数是否可以替换NULL类别标题?

提前致谢!

Joe*_*lli 12

试试这样:

SELECT 
IFNULL(name, 'MainTotal') AS name, 
IFNULL(location, 'SubTotal') AS location, 
SUM(IF(division='OEM',totalHours,NULL)) AS OEM,
SUM(IF(division='A/M',totalHours,NULL)) AS AM,
SUM(IF(division='SKF',totalHours,NULL)) AS SKF,
SUM(IF(division='RE',totalHours,NULL)) AS RE,
location as Location
FROM $databasetable GROUP BY location, name 
WITH ROLLUP
Run Code Online (Sandbox Code Playgroud)