Postgresql 行轉列兩種簡單方法

2021-10-09 00:27:29 字數 1738 閱讀 5422

create

table tb_student_score

( name varchar

, course varchar

, score int);

insert

into tb_student_score

values

('張三'

,'數學',83

);insert

into tb_student_score

values

('張三'

,'英語',93

);insert

into tb_student_score

values

('張三'

,'語文',80

);insert

into tb_student_score

values

('李四'

,'語文',74

);insert

into tb_student_score

values

('李四'

,'數學',84

);insert

into tb_student_score

values

('李四'

,'英語',94

select ch.name 姓名, ch.china_score 語文, math.math_score 數學, en.english_score 英語

from

(select name, score china_score from tb_student_score where course =

'語文'

) ch

left

join

(select name, score math_score from tb_student_score where course =

'數學'

) math on ch.name = math.name

left

join

(select name, score english_score from tb_student_score where course =

'英語'

) en on ch.name = en.name;

select name 姓名,

sum(

case

when course=

'語文'

then score else

0end

) 語文,

sum(

case

when course=

'數學'

then score else

0end

) 數學,

sum(

case

when course=

'英語'

then score else

0end

) 英語

from tb_student_score group

by name;

SQL行轉列兩種常用寫法

if object id tempdb.lsb1 is notnull drop table lsb1 create table lsb1 a1 varchar 50 a2 varchar 50 a3 varchar 50 insert into lsb1 values 張三 90 數學 inser...

mysql行轉列的兩種方法

建表語句 create table tb 姓名 varchar 10 課程 varchar 10 分數 int insert into tb values 張三 語文 74 insert into tb values 張三 數學 83 insert into tb values 張三 物理 93 i...

兩種if判斷

上海面試三 下面是c語言中兩種if語句判斷方式。請問哪種寫法更好?為什麼?int a if a1 第一種判斷方式 if 1a 第二判斷方式 答 這是個主觀題,不過多數人認為第二種好。從執行效率上講,第二種效率更高。另外,在編寫 時如果不小心將 寫成 即變成 1 a 這時編譯器將會給出錯誤提示。而如果...