列專行並將一列數據作爲表名 即修改列名(面試題)

 

 

面試題:

 

成績錶轉成結果表:

將成績表列合併,同組放到一個map中,然後通過map將數據取出並將列名轉換。

SELECT id,
       sub['數學'] AS `數學`,
       sub['語文'] AS `語文`
FROM
  (SELECT id,
          str_to_map(concat_ws(",",collect_set(concat_ws(':', subject, score)))) sub,
          concat_ws(",",collect_set(concat_ws(':', subject, score)))
   FROM tmp.tmp_test_1010
   GROUP BY id)t1

原始表:

結果表:

僅供參考,如有更好的方法互相學習。

 

 

:::總結::::人生很短,不斷學習

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章