SQL多行转一行(一列转多列)

我有一个表,结构如下所示:
apply_id bigint COMMENT ,
oss_key string COMMENT ‘存储在oss上的路径’,
type string COMMENT ‘类型,10-一类数据,20-二类数据,30-三类数据,40-四类数据,50-补充数据’,

查询出来之后是这样的数据

SELECT  apply_id
        ,type
        ,oss_key
FROM    ods_t_apply_auth
;

SQL多行转一行(一列转多列)_第1张图片
现在我想将type列去掉,将apply_id相同的oss_key分为五类既五列,也就是说apply_id变为唯一值,type类型列去掉,加上类型1,类型2,类型3,类型4,类型5五列数据。每一条数据对应一个apply_id。

执行如下SQL

SELECT  apply_id
        ,MAX( CASE WHEN type=10 THEN oss_key END) AS oss_key1
        ,MAX( CASE WHEN type=20 THEN oss_key END) AS oss_key2
        ,MAX( CASE WHEN type=30 THEN oss_key END) AS oss_key3
        ,MAX( CASE WHEN type=40 THEN oss_key END) AS oss_key4
        ,MAX( CASE WHEN type=50 THEN oss_key END) AS oss_key5
FROM    ods_t_apply_auth
GROUP BY apply_id
;

SQL多行转一行(一列转多列)_第2张图片
即可完成完美转换

你可能感兴趣的:(SQL问题)