SQL - Impala - 如何将一个分类列展开为多个?

SQL - Impala - How to unfold one categorical column into many?

我有以下 table :

user      category    number
1         A           8
1         B           6
2         A           1
2         C           9
3         B           5

我想"unfold"或"dummify"分类栏,用"number"栏填入:

user      cat_A    cat_B    cat_C
1         8        6        0
2         1        0        9
3         0        5        0

是否可以在 SQL (Impala) 中实现?

我找到了这个问题How to create dummy variable columns for thousands of categories in Google BigQuery?

但是它看起来有点复杂,我宁愿在 Pandas 中进行。

知道我有 10 个类别(A、B、C、D 等),是否有更简单的解决方案?

您可以尝试使用条件聚合函数

SELECT user,
        SUM(CASE WHEN category = 'A' THEN number ELSE 0 END) cat_A,  
        SUM(CASE WHEN category = 'B' THEN number ELSE 0 END) cat_B,  
        SUM(CASE WHEN category = 'C' THEN number ELSE 0 END) cat_C     
FROM T 
GROUP BY user