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

的SQL语句

2012-01-12 
求一个的SQL语句?第一张表:Course课程表course_idnameteacher1语文张三2数学李四3外语微微第二张表:fenshu

求一个的SQL语句?
第一张表:Course课程表
            course_id       name             teacher
            1                       语文               张三
            2                       数学               李四
            3                       外语               微微
第二张表:   fenshu份数表
            id                     swre               course_id         Num(学号)
            1                       80                   1                         001
            2                       60                   2                         001
            3                       90                   3                         001
            4                       85                   1                         002
            5                       98                   2                         002
要求查询结果为:
        学号         语文         数学         外语
        001           80             60             90
        002           85             98             0
没有的课程显示0分.

[解决办法]
create table test (姓名 char(10),课程 char(10),成绩 int)
go
insert test values( '张三 ', '语文 ',80)
insert test values( '张三 ', '数学 ',86)
insert test values( '张三 ', '英语 ',75)
insert test values( '李四 ', '语文 ',78)
insert test values( '李四 ', '数学 ',85)

declare @sql varchar(8000)
set @sql = 'select 姓名 '
select @sql = @sql + ',sum(case 课程 when ' ' '+rtrim(课程)+ ' ' ' then 成绩 else 0 end) [ '+rtrim(课程)+ '] '
from (select distinct 课程 from test) as a
select @sql = @sql+ ' from test group by 姓名 '
exec(@sql)

drop table test

--结果
/*


姓名 数学 英语 语文
-------------------------------
李四 85078
张三 867580
*/
[解决办法]
create table course(course_id int,name varchar(10),teacher varchar(10))
create table fenshu(id int,swre int,course_id int,num varchar(10))
insert course select 1, '语文 ', '张三 '
insert course select 2, '数学 ', '李四 '
insert course select 3, '外语 ', '微微 '
insert fenshu select 1, 80, 1, '001 '
insert fenshu select 2, 60, 2, '001 '
insert fenshu select 3, 90, 3, '001 '
insert fenshu select 4, 85, 1, '002 '
insert fenshu select 5, 98, 2, '002 '


declare @sql varchar(8000)

set @sql= 'select 学号=num, '
select @sql=@sql+b.name+ '=max(isnull(case when course_id= ' ' '+cast(b.course_id as varchar(10))+ ' ' ' then swre end,0)), '
from course b
select @sql=left(@sql,len(@sql)-1)+ ' from fenshu group by num '


exec(@sql)


drop table course,fenshu

热点排行