博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sql Server 行转列 学员分数 例子
阅读量:4920 次
发布时间:2019-06-11

本文共 1840 字,大约阅读时间需要 6 分钟。

if(EXISTS( SELECT * FROM sysobjects

  WHERE ID = OBJECT_ID('student')))
    drop table student
create table student
(
    stuid char(10) not null,
    stuname varchar(50) not null
)
insert into student values('050614001','张三')
insert into student values('050614002','李四')
insert into student values('050614003','王二')
insert into student values('050614004','黑六')
if(EXISTS( SELECT * FROM sysobjects
  WHERE ID = OBJECT_ID('subject')))
  drop table subject
create table subject
(
  sid int not null,
  sname varchar(50) not null
)
insert into subject values(1,'语文')
insert into subject values(2,'数学')
insert into subject values(3,'英语')
insert into subject values(4,'物理')
insert into subject values(5,'化学')
if(EXISTS( SELECT * FROM sysobjects
  WHERE ID = OBJECT_ID('score')))
  drop table score
create table score
(
  stuid char(10) not null,
  sid int not null,
  score int not null
)
insert into score values('050614001',1,87)
insert into score values('050614001',2,89)
insert into score values('050614001',3,90)
insert into score values('050614002',5,70)
insert into score values('050614002',1,91)
insert into score values('050614002',2,92)
insert into score values('050614004',3,93)
insert into score values('050614003',1,94)
insert into score values('050614003',2,95)
insert into score values('050614003',3,86)

declare @strSQL  varchar(8000)
SET @strSQL = 'select student.stuName [姓名]'
select @strSQL = @strSQL + ',SUM(CASE subject.SNAME WHEN ''' + SNAME + ''' THEN score.[Score] END) [' + SNAME + ']' FROM (SELECT SNAME FROM [Subject]) AS tmp
set @strSQL = @strSQL + ',sum(score) as 总分  from student
    left join score on student.stuId = score.stuid
    left join subject on score.sid = subject.sid
GROUP BY student.STUID, student.STUNAME
order by 总分 desc'
exec (@strSQl)

 

SQL SERVER 2005 中,已经有实现此功能的内置方法了。

转载于:https://www.cnblogs.com/yuanxianlai/archive/2011/12/20/2294630.html

你可能感兴趣的文章
直接用postman测试api ,服务器端没提供跨域也可以访问。
查看>>
数据的类型以及内置方法
查看>>
继承之super关键字的使用
查看>>
XML - 报表数据的新大陆
查看>>
echart在X轴下方添加字
查看>>
Map集合的两种取出方式
查看>>
GridView,Repeater增加自动序号列
查看>>
SMO算法精解
查看>>
第k小元素学习记录
查看>>
avi文件格式详解【转】
查看>>
django
查看>>
Java学习从入门到精通
查看>>
查找目录下的所有文件中是否含有某个字符串 linux
查看>>
66. Plus One 数组加1
查看>>
范式原则
查看>>
2018年各大互联网前端面试题四(美团)
查看>>
一起学Python:字符串介绍
查看>>
学习笔记:树状数组
查看>>
洛谷P1772 [ZJOI2006]物流运输 题解
查看>>
CF519E A and B and Lecture Rooms
查看>>