Используя запрос 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
Вот запрос, который я использовал для создания таблицы. После исследования этой проблемы кажется, что функция 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
Кто-нибудь может сказать мне, что я делаю не так? Является ли функция CASE способом замены названий категории NULL?
Заранее спасибо!