用sql,大家帮帮忙!

已知数据表数据如(表一),请将它动态显示成(表二)格式

 

create table StudentInfo(Sname varchar(10) , Subject varchar(10) , Scorefloat)

insert into StudentInfo values('张三' , '.Net' , 80)

insert into StudentInfo values('张三' , 'JAVA' , 85)

insert into StudentInfo values('张三' , 'SQL' , 95)

insert into StudentInfo values('李四' , '.Net' , 86)

insert into StudentInfo values('李四' , 'JAVA' , 92)

insert into StudentInfo values('王五' , '.Net' , 96)

insert into StudentInfo values('王五' , 'JAVA' , 88)

insert into StudentInfo values('王五' , 'SQL' ,78)

 

姓名

课程

成绩

张三

.Net

80

张三

JAVA

85

张三

SQL

95

李四

.NET

86

李四

JAVA

92

王五

.NET

96

王五

JAVA

88

王五

SQL

78

姓名

.NET

JAVA

SQL

张三

80

85

95

李四

86

92

 

王五

96

88

78

          (表一)                                     (表二)

慕沐林林
浏览 620回答 9
9回答

婷婷同学_

能解释下不,看不太懂!

慕勒3428872

@小兴o………o: ID CLASS SCORE------ ---------- ----------1 language 782 english 983 maths 941 maths 852 maths 56---------------------------------------------select id,sum(decode(class,'language',score,0)) "语文",sum(decode(class,'english',score,0)) "英语",sum(decode(class,'maths',score,0)) "数学"from tp1group by id--------------------用动态SQL  语句,Score是不定数的ID 语文 英语 数学------- ---------- ---------- ----------1 78 0 852 0 98 563 0 0 94

慕无忌1623718

@無限遐想: 先 以姓名分组。对于一个类型,进行查询,得到结果。给了 一个列名。 道理 其实是一样的。

手掌心

@無限遐想: selectA1.姓名,sum(case A1.课程 when ‘.NET’ )as '.NET',sum(case A1.课程 when ‘JAVA’ )as 'JAVA',sum(case A1.课程 when ‘SQL’ )as 'SQL'from A A1group by A1.姓名

呼如林

行转列的问题,sql2005中有个函数:PIVOT,具体用法可查demo
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server