Sie können unten "Technik" verwenden
Führen Sie zuerst Abfrage Nr. 1 aus. Es erzeugt die Abfrage (Abfrage Nr. 2), die Sie ausführen müssen, um das gewünschte Ergebnis zu erhalten. Bitte beachten Sie Moshas Kommentare, bevor Sie mit Tausenden von Kategorien "wild" werden :o)
Abfrage #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
)
Das Ergebnis sieht wie folgt aus:Abfrage #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
natürlich für drei Kategorien - Sie könnten es manuell machen, aber für Tausende wird es Ihnen bestimmt den Tag versüßen!!
Das Ergebnis von Abfrage Nr. 2 sieht wie erwartet aus:
UserID A B C
1 1 1 0
2 0 0 1
3 1 1 1