数据库行列转换

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据库行列转换

本查询在sqlserver2008中测试通过了的

希望对大家有所帮助

数据库中的表格

要求查询出的数据:

建表:

create table studentResult(

name varchar(50),

Subject varchar(50),

Result int

)

插入数据:

insert into studentResult values('张三','语文',80)

insert into studentResult values('张三','数学',70)

insert into studentResult values('张三','物理',90)

insert into studentResult values('李四','语文',75)

insert into studentResult values('李四','数学',84)

insert into studentResult values('李四','物理',69)

************** 重点:查询语句************** 方法一,//静态sql 即只有(数学语文物理)3个科目,没有其余的科目select name,

Max(case[Subject]when'数学'then result else 0 end)数学,

Max(case[Subject]when'语文'then result else 0 end)语文,

Max(case[Subject]when'物理'then result else 0 end)物理

from studentResult group by name

方法二,//即科目不确定的情况下

declare@sql varchar(8000)

set@sql='select name'

select@sql=@sql+', max(case [Subject] when '''+Subject+''' then result

else 0 end) ['+Subject+']'

from (select distinct Subject from studentResult)as a

set@sql=@sql+' from studentResult group by name'

exec(@sql)

如果再插入一行

insert into studentResult values('王五','化学',60)

执行方法二(动态sql)的结果为

而方法一(静态sql)的结果为

相关文档
最新文档