SQL查询语句行转列横向显示实例解析
2022-11-12 09:44:15
内容摘要
这篇文章主要为大家详细介绍了SQL查询语句行转列横向显示实例解析,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
本文分享了两个有关SQL
文章正文
这篇文章主要为大家详细介绍了SQL查询语句行转列横向显示实例解析,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
本文分享了两个有关SQL查询语句行转列横向显示的示例,供大家参考,具体内容如下
示例1:
在SQL查询语句行转列横向显示中access中没有CASE,要用IIF代替
select iif(sex= '1 ', '男 ', '女 ') from tablename
【图片暂缺】
代码如下:
1 2 3 4 5 6 7 8 | <code> 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 </code> |
示例2:
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | <code> /* 问题:假设有张学生成绩表(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 */ </code> |
以上就是本文的全部内容,希望对大家的学习有所帮助。
注:关于SQL查询语句行转列横向显示实例解析的内容就先介绍到这里,更多相关文章的可以留意
代码注释