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

请问一个sql语句

2012-01-21 
请教一个sql语句假如有两个表Tstudent和Tcourse表结果分别如下Tstudent表:idsidsname1001张三2002李四Tcou

请教一个sql语句
假如有两个表Tstudent和Tcourse表结果分别如下
Tstudent表:id sid sname
  1 001 张三
  2 002 李四

Tcourse表 id sid course
  1 001 语文
  2 002 语文
  3 001 数学
  4 001 英语

现在我要查出每个学生所学的学科有哪些,并显示出来的结果形式如下:
  学号 姓名 所学课程
  001 张三 语文 数学 英语
  002 李四 语文

请问这样SQL语句要怎么写呢,先谢谢了!

[解决办法]
大概是使用case when then else end将行转化为列,循环你的Tcourse表,生成sql语句.
用execute执行即可.
[解决办法]
SELECTstudent_key, 
SUM(CASE course_key WHEN 1 THEN mark else 0 end) AS 'English',
SUM(CASE course_key WHEN 2 THEN mark else 0 end) AS 'Maths',
SUM(CASE course_key WHEN 3 THEN mark else 0 end) AS 'Physics'
FROMScore
GROUPBY student_key

DECLARE @sql VARCHAR(1024)
SET@sql = ''
SELECT@sql = @sql + 'SUM(CASE course_key WHEN ' + CAST(course_key AS VARCHAR) + ' THEN mark else 0 end)' + ','
FROM(SELECT DISTINCT course_key FROM Score) AS obj
SELECT@sql = LEFT(@sql, LEN(@sql) - 1) 
SET@sql = 'SELECTstudent_key,' + @sql + ' FROMScore GROUPBY student_key'
EXECUTE (@sql)

热点排行