使用下面的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)