日期:2014-05-18  浏览次数:20347 次

sql查询排列问题
比如表的信息是
科目表
lessionid(课程号)   lessionname(课程名)
l001                             C语言
l002                             C++
l003                             VB.NET
....

人员信息表
stuid(学号)         stuname(姓名)   ....
001                         刘大
002                         关二
003                         张三
...

分数信息表
stuid(学号)         lessionid(课程号)       score(分数)
001                         l001                                 99
002                         l002                                 88
003                         l003                                 77
...
           
学号       姓名         C语言       C++       VB.NET   ...
001         刘大         99             99         99
002         关二         88             88         88
003         张三         77             77         77
我不要那种固定格式输出,因为课程名可能有变动的.那种固定一旦变动了课程信息就还得改动程序,很不方便.

------解决方案--------------------
if object_id( 'pubs..科目表 ') is not null
drop table 科目表
go
create table 科目表(lessionid varchar(10),lessionname varchar(10))
insert into 科目表(lessionid,lessionname) values( 'l001 ', 'C语言 ')
insert into 科目表(lessionid,lessionname) values( 'l002 ', 'C++ ')
insert into 科目表(lessionid,lessionname) values( 'l003 ', 'VB.NET ')
go

if object_id( 'pubs..人员信息表 ') is not null
drop table 人员信息表
go
create table 人员信息表(stuid varchar(10),stuname varchar(10))
insert into 人员信息表(stuid,stuname) values( '001 ', '刘大 ')
insert into 人员信息表(stuid,stuname) values( '002 ', '关二 ')
insert into 人员信息表(stuid,stuname) values( '003 ', '张三 ')
go

if object_id( 'pubs..分数信息表 ') is not null
drop table 分数信息表
go
create table 分数信息表(stuid varchar(10),lessionid varchar(10),score int)
insert into 分数信息表(stuid,lessionid,score) values( '001 ', 'l001 ',99)
insert into 分数信息表(stuid,lessionid,score) values( '002 ', 'l002 ',88)
insert into 分数信息表(stuid,lessionid,score) values( '003 ', 'l003 ',77)
go

declare @sql varchar(8000)
set @sql = 'select stuid,stuname '
select @sql = @sql