impala行列转换,除了case...when...这种静态转换方法,还有别的转换方法吗?

最近遇到impala行列转换,网上搜了一下,大都是用 max(case ... when ...)静态行转列,但是这个方法是在已知晓有多少数据的情况下可以使用,在不确定数据的情况下,该用什么办法进行行列转换呢?


SELECT  name 姓名 ,

        MAX(CASE subject WHEN '语文' THEN Score  ELSE 0
            END) 语文 ,

        MAX(CASE subject WHEN '数学' THEN Score ELSE 0
            END) 数学 ,

        MAX(CASE subject WHEN '英语' THEN Score ELSE 0
            END) 英语,

        MAX(CASE subject WHEN '生物' THEN Score  ELSE 0
            END) 生物

FROM    #T

GROUP BY name

图片说明图片说明

https://blog.csdn.net/enjoyjin/article/details/41685047