以下の「テクニック」を使用できます
最初にクエリ#1を実行します。必要な結果を得るために実行する必要のあるクエリ(クエリ#2)が生成されます。数千のカテゴリで「ワイルド」になる前に、Moshaのコメントを検討してください:o)
クエリ#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
)
結果は次のようになります-クエリ#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
もちろん、3つのカテゴリの場合-手動で行うこともできますが、数千の場合は間違いなくあなたのための日になるでしょう!!
クエリ#2の結果は期待どおりになります:
UserID A B C
1 1 1 0
2 0 0 1
3 1 1 1