首页 > 资讯列表 > 编程/数据库 >> 数据库操作教程

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

数据库操作教程 2022-09-23 17:53:52 转载来源: 网络整理/侵权必删

本文分享了两个有关SQL查询语句行转列横向显示的示例,供大家参考,具体内容如下示例1:在SQL查询语句行转列横向显示中access中没有CASE,要用IIF代替select iif(sex='1','男','女') from tablenameselectcountry,sum(casewhentype='A'thenmoneyend)asA,sum(casewhentype='B'thenmoneyend)asB,sum(casewhentype='C'thenmoneyend)asCfromtable1groupbycountry示例2:/*问题:假设有张学生成绩表(tb)如下:姓名课程分数张三语文74张三数学83张三物理93李四语文74李四数学84李四物理94想变成(得到如下结果):姓名语文数学物理----------------李四748494张三748393-------------------*/createtabletb(姓名varchar(10),课程varchar(10),分数int)insertintotbvalues('张三','语文

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

示例1:

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

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

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 Cfrom table1group 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 tbgroup 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 aset @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*/

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

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


声明:本文内容来源自网络,文字、图片等素材版权属于原作者,平台转载素材出于传递更多信息,文章内容仅供参考与学习,切勿作为商业目的使用。如果侵害了您的合法权益,请您及时与我们联系,我们会在第一时间进行处理!我们尊重版权,也致力于保护版权,站搜网感谢您的分享!

站长搜索

http://www.adminso.com

Copyright @ 2007~2024 All Rights Reserved.

Powered By 站长搜索

打开手机扫描上面的二维码打开手机版


使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

站长搜索目录系统技术支持