Используя приведенный ниже запрос 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?
Заранее спасибо!