天天看點

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多行轉一行(一列轉多列)

現在我想将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多行轉一行(一列轉多列)

即可完成完美轉換

繼續閱讀