SQL查询语句行转列横向显示实例解析

2023-06-16 0 462

数据库教程-ER0编程网

本文分享了两个有关SQL查询语句行转列横向显示的示例,供大家参考,具体内容如下

示例1:

在SQL查询语句行转列横向显示中access中没有CASE,要用IIF代替

select  iif(sex= \’1 \’, \’男 \’, \’女 \’)  from  tablename

SQL查询语句行转列横向显示实例解析

select country, sum(case when type=\'A\' then money end) as A,
sum(case when type=\'B\' then money end) as B,
sum(case when type=\'C\' then money end) as C
from table1
group by country

示例2:

/*
问题:假设有张学生成绩表(tb)如下:
姓名 课程 分数
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
想变成(得到如下结果): 
姓名 语文 数学 物理 
---- ---- ---- ----
李四 74  84  94
张三 74  83  93
-------------------
*/

create table tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int)
insert into tb values(\'张三\' , \'语文\' , 74)
insert into tb values(\'张三\' , \'数学\' , 83)
insert into tb values(\'张三\' , \'物理\' , 93)
insert into tb values(\'李四\' , \'语文\' , 74)
insert into tb values(\'李四\' , \'数学\' , 84)
insert into tb values(\'李四\' , \'物理\' , 94)
go

--SQL SERVER 2000 静态SQL,指课程只有语文、数学、物理这三门课程。(以下同)
select 姓名 as 姓名 ,
max(case 课程 when \'语文\' then 分数 else 0 end) 语文,
max(case 课程 when \'数学\' then 分数 else 0 end) 数学,
max(case 课程 when \'物理\' then 分数 else 0 end) 物理
from tb
group by 姓名

--SQL SERVER 2000 动态SQL,指课程不止语文、数学、物理这三门课程。(以下同)
declare @sql varchar(8000)
set @sql = \'select 姓名 \'
select @sql = @sql + \' , max(case 课程 when \'\'\' + 课程 + \'\'\' then 分数 else 0 end) [\' + 课程 + \']\'
from (select distinct 课程 from tb) as a
set @sql = @sql + \' from tb group by 姓名\'
exec(@sql) 

--SQL SERVER 2005 静态SQL。
select * from (select * from tb) a pivot (max(分数) for 课程 in (语文,数学,物理)) b

--SQL SERVER 2005 动态SQL。
declare @sql varchar(8000)
select @sql = isnull(@sql + \'],[\' , \'\') + 课程 from tb group by 课程
set @sql = \'[\' + @sql + \']\'
exec (\'select * from (select * from tb) a pivot (max(分数) for 课程 in (\' + @sql + \')) b\')

---------------------------------

/*
问题:在上述结果的基础上加平均分,总分,得到如下结果:
姓名 语文 数学 物理 平均分 总分 
---- ---- ---- ---- ------ ----
李四 74  84  94  84.00 252
张三 74  83  93  83.33 250
*/

以上就是本文的全部内容,希望对大家的学习有所帮助。

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!

2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!

3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!

4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有猫币奖励和额外收入!

5. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!

ER0学院 数据库 SQL查询语句行转列横向显示实例解析 https://www.er0xy.com/44442.html

常见问题

相关文章

发表评论
暂无评论
  • 0 +

    访问总数

  • 0 +

    会员总数

  • 0 +

    文章总数

  • 0 +

    今日发布

  • 0 +

    本周发布

  • 0 +

    运行天数

你的前景,远超我们想象