mysql ФУНКЦИОНАЛЬНАЯ ГРУППА не существует - PullRequest
0 голосов
/ 02 марта 2020

При использовании WITH ROLLUP я получаю эту ошибку:

# 1305 - FUNCTION GROUPING не существует

Моя версия БД:

innodb_version  5.7.28
version     10.2.30-MariaDB

Странно, что WITH ROLLUP работает, но не GROUPING(). Я хотел бы заменить нули

Любая идея?

Мой SQL:

SELECT
IF(GROUPING(`Categorie`), 'All Categorie',`Categorie`) AS `Categorie`,
`Grootboek`,
SUM(`Bedrag2020`) AS `Bedrag2020` 
FROM `vw_resultaat_ytd` 
Group by
`Categorie`,
`Grootboek` WITH ROLLUP;

Как описано в: https://www.mysqltutorial.org/mysql-rollup/

Ответы [ 2 ]

0 голосов
/ 02 марта 2020

Великий Гордон, это поможет мне. Наконец, это было конечное решение, которое я искал, но я не объяснил его полностью:

SELECT  Categorie, 
COALESCE(Grootboek, concat('All ', Categorie)) AS Grootboek,
SUM(Bedrag2020) AS Bedrag2020
FROM vw_resultaat_ytd 
GROUP BY Categorie, Grootboek WITH ROLLUP;
0 голосов
/ 02 марта 2020

Понятно, grouping() не поддерживается. Если Categorie не может быть NULL, тогда просто используйте COALESCE():

SELECT COALESCE(Categorie, 'All Categorie') AS Categorie, 
       Grootboek, SUM(Bedrag2020) AS Bedrag2020
FROM vw_resultaat_ytd 
GROUP BY Categorie, Grootboek WITH ROLLUP;

Если Categorie может быть NULL, то вам нужно заменить значение недопустимым значением и отменить это :

SELECT (CASE WHEN Categorie IS NULL THEN 'All Categorie'
             WHEN Categorie <> '<NULL>' THEN Categorie
        END)  AS Categorie, 
       Grootboek, SUM(Bedrag2020) AS Bedrag2020
FROM vw_resultaat_ytd 
GROUP BY COALESCE(Categorie, '<NULL>'), Grootboek WITH ROLLUP;
...