SQL 行轉列 列轉行11 15

2021-10-25 09:40:09 字數 1335 閱讀 4005

原表tmp:

問題,將課程放到列上去

用case when 或 if ,外面再巢狀乙個sum即可。

#對於c_name,轉成列

##兩種方法結果一樣

#case when 表示式1 then 值1 when 表示式2 then 值2 else 值 end

select stu_id,

sum(

case

when c_name =

'語文'

then grade else

0end

)'語文'

,sum

(case

when c_name =

'數學'

then grade else

0end

)'數學'

,sum

(case

when c_name =

'英語'

then grade else

0end

)'英語'

from tmp group

by stu_id;

# if(表示式, 值1, 值2)

select stu_id,

sum(

if(c_name =

'語文'

,grade,0)

)'語文'

,sum(if

(c_name =

'數學'

,grade,0)

)'數學'

,sum(if

(c_name =

'英語'

,grade,0)

)'英語'

from tmp group

by stu_id;

結果:

問題,把stu_id放到一格中

#列轉行

#hive的函式

selcet

collect_set(stu_id) stu_id_set,

collect_list(stu_id) stu_id_list

from tmp;

結果:

stu_id_set

stu_id_list

[『1』,『2』,『3』]

[『1』,『1』,『1』,『2』,『2』,『2』,『3』,『3』,『3』]

SQL 行轉列,列轉行

行列轉換在做報表分析是還是經常會遇到的 行列轉換就是如下圖所示兩種展示形式互相轉換 只是做測試,建表比較隨意 create table student name varchar 20 subject int 10 score int 10 insert into student name,subje...

python 列轉行 SQL 行轉列,列轉行

sql 行轉列,列轉行 行列轉換在做報表分析時還是經常會遇到的,今天就說一下如何實現行列轉換吧。行列轉換就是如下圖所示兩種展示形式的互相轉換 行轉列假如我們有下表 select from student pivot sum score for subject in 語文,數學,英語 通過上面 sql...

sql 行轉列,列轉行整合

原始資料及結構如下 when 語文 then t.score else 0 end 語文,sum case t.subject when 數學 then t.score else 0 end 數學 sum case t.subject when 英語 then t.score else 0 end ...