1.SQL中的反转透视

 创建数据源: 

  创建表结构
  if OBJECT_ID('Score' ,'U') is not null
  drop table Score

  create table Score
  (
    学号 nvarchar(10),
    课程 nvarchar(10),
    成绩 int
  )

  insert into Score values('0001','语文',87);
  insert into Score values('0001','数学',79);
  insert into Score values('0001','英语',95);
  insert into Score values('0002','语文',69);
  insert into Score values('0002','数学',84);

Method 1:

select 学号,
sum(case when 课程='语文' then 成绩 else 0 end) as 语文,
sum(case when 课程='数学' then 成绩 else 0 end) as 数学,
sum(case when 课程='英语' then 成绩 else 0 end) as 英语
from Score
group by 学号

Method 2:

select distinct 学号,
max(case when 课程='语文' then 成绩 else 0 end) over(partition by 学号) as 语文,
max(case when 课程='数学' then 成绩 else 0 end) over(partition by 学号) as 数学,
max(case when 课程='英语' then 成绩 else 0 end) over(partition by 学号) as 英语
from Score

Method 3:

select  学号,

sum(case when 课程 = '语文' then 成绩 end) as 语文,

end) as 数学,

end),0) as 英语

Score

学号

2、批量更新操作

update table1 set (table1.c1,table1.c2)=(select table2.c1,table2.c2 from table2 where table1.id=table2.id)

相关文章: