Anda dapat menggunakan "teknik" di bawah ini
Pertama jalankan kueri #1. Ini menghasilkan kueri (kueri #2) yang perlu Anda jalankan untuk mendapatkan hasil yang Anda butuhkan. Harap, tetap pertimbangkan komentar Mosha sebelum menjadi "liar" dengan ribuan kategori :o)
Pertanyaan #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
)
Hasilnya akan seperti di bawah ini - Query #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
tentu saja untuk tiga kategori - Anda bisa melakukannya secara manual, tetapi untuk ribuan itu pasti akan membuat hari untuk Anda!!
Hasil kueri #2 akan terlihat seperti yang Anda harapkan:
UserID A B C
1 1 1 0
2 0 0 1
3 1 1 1