- 论坛徽章:
- 0
|
--建表
create table tb( Name varchar(10) , Subject varchar(10) , Result int)
--录入数据
insert into tb(name , subject , result) values('张三' , '语文' , 74)
insert into tb(name , subject , result) values('张三' , '数学' , 83)
insert into tb(name , subject , result) values('张三' , '物理' , 93)
insert into tb(name , subject , result) values('李四' , '语文' , 74)
insert into tb(name , subject , result) values('李四' , '数学' , 84)
insert into tb(name , subject , result) values('李四' , '物理' , 94)
--动态列转行
declare @sql varchar(8000)
set @sql = 'select name as ' + '姓名'
select @sql = @sql + ' , max(case subject when ''' + subject + ''' then result else 0 end) [' + subject + ']' from (select distinct subject from tb ) as a
set @sql = @sql + ' from tb group by name'
exec(@sql)
实现结果:
在ms_sql中没有任何问题,结果为
姓名 数学 物理 语文
李四 84 94 74
张三 83 93 74
但是同样的语句在sybase中执行的结果就是不是自己想要的,其结果为
姓名 物理
张三 93
李四 94
筛选出来的结果只有“物理”一门学科了。本菜鸟以前都是用ms-sql的,最近才开始用sybase,
不理解为什么在ms-sql中可以,为什么到sybase就不行了,请问问题出在哪里,或者在sybase中
动态列转行该怎么实现,请高人不吝指教,小弟在此多谢了,初来乍到,也不知道怎么送分,下次学会了,一定送分,谢谢了!! |
|