1、行、列转换
--行转列 create table 成绩(姓名 varchar(10),科目 varchar(10),分数 int) insert into 成绩 values('张三','语文',74) insert into 成绩 values('张三','数学',83) insert into 成绩 values('张三','物理',93) insert into 成绩 values('李四','语文',77) insert into 成绩 values('李四','数学',84) insert into 成绩 values('李四','物理',94) insert into 成绩 values('王五','语文',81) insert into 成绩 values('王五','数学',86) insert into 成绩 values('王五','物理',91) --方法1 select 姓名, max(case 科目 when '语文' then 分数 else 0 end) as 语文, max(case 科目 when '数学' then 分数 else 0 end) as 数学, max(case 科目 when '物理' then 分数 else 0 end) as 物理 from 成绩 group by 姓名 --方法2(sql20005) select*from 成绩 pivot(max(分数) for 科目 in (语文,数学,物理)) a --列转行 create table 成绩(姓名 varchar(10),语文 int,数学 int,物理 int) insert into 成绩 values('张三',74,83,93) insert into 成绩 values('李四',77,84,94) insert into 成绩 values('王五',81,86,91) --方法1 select 姓名,'语文' as 科目,语文 as 分数 from 成绩 union select 姓名,'数学' as 科目,数学 as 分数 from 成绩 union select 姓名,'物理' as 科目,物理 as 分数 from 成绩 --方法2 select 姓名,科目,分数 from 成绩 unpivot(分数 for 科目 in(语文,数学,物理)) t