列轉行且行轉列

2022-02-18 20:18:45 字數 1005 閱讀 1612

原資料格式如下:

這是學生的成績表,每科為一列,要求轉換為下面的格式:

即,把把課程列轉換為行,把學生行轉換為列:

建表:create table #a

(name varchar(20),english int,chinese int ,math int)

insert into #a values( 'zhangsan',10,39,40)

insert into #a values( 'lisi',16,25,36)

思路:先把列轉換為行:

select name,km,score

from

(select name,english,chinese,math

from #a) a

unpivot

(score for km in

(english,chinese,math )

) as unpvt

如下資料:

然後把行name轉換為列:

select *

from

(select name,km,score from

(select name,km,score from (select name,english,chinese,math from #a) a unpivot (score for km in (english,chinese,math ) ) as unpvt) a

) apivot

(max(score) for name in (zhangsan,lisi))

as unpvt

行轉列 列轉行

行轉列 select t.t.rowid from test1 t id c1 c2 c3 1 小紅 數學 10 2 小紅 語文 20 3 小欄 數學 15 4 小欄 語文 25 test1 oracle select c1,to char wm concat c2 c2 from test1 gr...

hive 列轉行 HQL 行轉列,列轉行

1 相關函式 concat string a col,string b col 返回輸入字串連線後的結果,支援任意個輸入字串 concat ws separator,str1,str2,它是乙個特殊形式的 concat 第乙個引數剩餘引數間的分隔符。分隔符可以是與剩餘引數一樣的字串。如果分隔符是 n...

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

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