Můžete použít níže uvedenou „technickou“
První spuštění dotazu č. 1. Vytváří dotaz (dotaz č. 2), který musíte spustit, abyste dosáhli požadovaného výsledku. Prosím, stále zvažte Moshaovy komentáře, než začnete „wild“ s tisíci kategoriemi:o)
Dotaz č. 1:
SELECT 'select UserID, ' +
GROUP_CONCAT_UNQUOTED(
'sum(if(category = "' + STRING(category) + '", 1, 0)) as ' + STRING(category)
)
+ ' from YourTable group by UserID'
FROM (
SELECT category
FROM YourTable
GROUP BY category
)
Výsledek bude vypadat jako níže – dotaz č. 2
SELECT
UserID,
SUM(IF(category = "A", 1, 0)) AS A,
SUM(IF(category = "B", 1, 0)) AS B,
SUM(IF(category = "C", 1, 0)) AS C
FROM
YourTable
GROUP BY
UserID
samozřejmě pro tři kategorie - můžete to udělat ručně, ale za tisíce vám to určitě udělá den!!
Výsledek dotazu č. 2 bude vypadat, jak očekáváte:
UserID A B C
1 1 1 0
2 0 0 1
3 1 1 1