Bạn có thể sử dụng bên dưới "technic"
Đầu tiên hãy chạy truy vấn số 1. Nó tạo ra truy vấn (truy vấn số 2) mà bạn cần chạy để nhận được kết quả bạn cần.
Truy vấn số 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
)
Kết quả sẽ như dưới đây - Truy vấn số 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
tất nhiên đối với ba danh mục - bạn có thể làm điều đó theo cách thủ công, nhưng đối với hàng nghìn loại, nó chắc chắn sẽ có ngày cho bạn !!
Kết quả của truy vấn số 2 sẽ giống như bạn mong đợi:
UserID A B C
1 1 1 0
2 0 0 1
3 1 1 1