Puoi usare sotto "tecnica"
Prima query di esecuzione n. 1. Produce la query (query n. 2) che devi eseguire per ottenere il risultato di cui hai bisogno. Per favore, considera ancora i commenti di Mosha prima di diventare "selvaggio" con migliaia di categorie :o)
Domanda n. 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
)
Il risultato sarà come di seguito:Query n. 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
ovviamente per tre categorie:potresti farlo manualmente, ma per migliaia farà sicuramente giorno per te!!
Il risultato della query n. 2 apparirà come previsto:
UserID A B C
1 1 1 0
2 0 0 1
3 1 1 1