回 帖 发 新 帖 刷新版面

主题:[原创]求教sql查询语句

行列转换
成功案例:
假设有张学生成绩表(CJ)如下
Name    Subject     Result
张三    语文        80
张三    数学        90
张三    物理        85
李四    语文        85
李四    数学        92
李四    物理        82

想变成    
姓名   语文   数学   物理
张三   80     90     85
李四   85     92     82

用一下语句可成功转换:
declare @sql varchar(4000)
set @sql = 'select Name'
select @sql = @sql + ',sum(case Subject when '''+Subject+''' then Result end) ['+Subject+']'
from (select distinct Subject from CJ) as a
select @sql = @sql+' from CJ group by name'
exec(@sql)

[color=FF0000]问题:[/color]
现在的情况是这样:有两张表,表1跟上面的表一样:
表1:学生成绩表(CJ)
Name    Subject     Result
张三    语文        80
张三    数学        90
张三    物理        85
李四    语文        85
李四    数学        92
李四    物理        82

表2:学生信息表(xx)
name  nation
张三   汉族
李四   黎族

如何才能变成如下表:

姓名   语文   数学   物理   nation
张三   80     90     85     汉族
李四   85     92     82     黎族


能实现这样的联合查询吗??恳请高手赐教!

回复列表 (共1个回复)

沙发


if exists(select * from sysobjects where name='bbs')
drop table bbs
create table bbs
(
    name varchar(10) not null,
    subject varchar(10) not null,
    result int not null
)

if exists(select * from sysobjects where name ='strmarks')
drop table strmarks
create table strmarks 
(
    name varchar(10) not null,
    nation varchar(10) not null
)

insert into strmarks values('张三','汉族')
insert into strmarks values('李四','黎族')

insert into bbs values('张三','语文',85)
insert into bbs values('张三','数学',70)
insert into bbs values('张三','物理',65)
insert into bbs values('李四','语文',90)
insert into bbs values('李四','数学',68)
insert into bbs values('李四','物理',78)

查询的语句如下:
select 姓名=a.name,sum(case a.subject
when '语文' then result end)as '语文',
sum(case a.subject
when '数学' then result end)as '数学',
sum(case a.subject
when '物理' then result end)as '物理',
b.nation
from bbs a left join strmarks b on a.name=b.name group by a.name,b.nation 



姓名         语文          数学          物理          nation     
---------- ----------- ----------- ----------- ---------- 
张三         85          70          65          汉族
李四         90          68          78          黎族

我来回复

您尚未登录,请登录后再回复。点此登录或注册