首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求一条SQL语句!解决方案

2012-02-03 
求一条SQL语句!!有三张表stuSubject 表名idstusj1语文2数学3英语stuName 表名idstuname1张三2李四3王五stu

求一条SQL语句!!
有三张表
stuSubject 表名
id stusj
1 语文
2 数学
3 英语


stuName 表名
id stuname
1 张三
2 李四
3 王五


stuTest 表名
id stunameId stusjId stuMark
1 1 1 90
2 1 2 32
3 1 3 43
4 2 1 54
5 2 2 65
6 2 3 93
7 3 1 65
8 3 2 -1
9 3 3 34

-------------------------------------
最后要的结果是 姓名 语文 数学 英语 
  张三 90 32 43 
  李四 54 65 93
  王五 65 缺考 34 -1代表缺考,各位大虾们,这条SQL语句怎么写啊。 我想了几天了!!!!在线等高手

[解决办法]

SQL code
IF OBJECT_ID(N'stuSubject') IS NOT NULLDROP TABLE stuSubjectGOcreate table stuSubject(id int,stusj varchar(10))INSERT INTO stuSubject select 1,'语文'INSERT INTO stuSubject select 2,'数学'INSERT INTO stuSubject select 3,'英语'IF OBJECT_ID(N'stuName') IS NOT NULLDROP TABLE stuNameGOcreate table stuName(id int,stuname varchar(10))insert into stuName select 1,'张三'insert into stuName select 2,'李四'insert into stuName select 3,'王五'IF OBJECT_ID(N'stuTest') IS NOT NULLDROP TABLE stuTestGOcreate table stuTest(id int,stunameId int,stusjId int,stuMark VARCHAR(10))insert into stuTest select 1,1,1,90insert into stuTest select 2,1,2,32insert into stuTest select 3,1,3,43insert into stuTest select 4,2,1,54insert into stuTest select 5,2,2,65insert into stuTest select 6,2,3,93insert into stuTest select 7,3,1,65insert into stuTest select 8,3,2,-1insert into stuTest select 9,3,3,34goSELECT id,stuname,[语文],[数学],[英语]FROM (SELECT B.id,B.stuname,C.stusj,AA=CASE A.stuMark WHEN -1 THEN '缺考' ELSE A.stuMark ENDFROM stuTest AJOIN stuname B ON A.stunameId = B.idJOIN stuSubject C ON A.stusjId = C.id) Ppivot (MAX(AA) FOR stusj IN ([语文],[数学],[英语]))AS pvtORDER BY 1/*id          stuname    语文         数学         英语----------- ---------- ---------- ---------- ----------1           张三         90         32         432           李四         54         65         933           王五         65         缺考         34(3 行受影响)*/ 

热点排行