Vous pouvez utiliser ci-dessous "technique"
Exécutez d'abord la requête n° 1. Il produit la requête (requête #2) que vous devez exécuter pour obtenir le résultat dont vous avez besoin. Veuillez toujours tenir compte des commentaires de Mosha avant de devenir "sauvage" avec des milliers de catégories :o)
Requête #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
)
Le résultat sera comme ci-dessous - Requête #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
bien sûr pour trois catégories - vous pouvez le faire manuellement, mais pour des milliers, cela vous fera certainement plaisir !!
Le résultat de la requête #2 ressemblera à ce que vous attendiez :
UserID A B C
1 1 1 0
2 0 0 1
3 1 1 1