sql行转列的应用(SQL查询语句行转列横向显示实例解析)
类别:数据库 浏览量:733
时间:2022-04-03 13:09:39 sql行转列的应用
SQL查询语句行转列横向显示实例解析本文分享了两个有关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 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 */
以上就是本文的全部内容,希望对大家的学习有所帮助。
您可能感兴趣
- mysql优化使用方法(详解Mysql函数调用优化)
- sqlserverlog原理(sql server中错误日志errorlog的深入讲解)
- mysql数据类型
- sql server中PageLatch和PageIOLatch等待
- sql server中策略管理
- SQL Server批处理注意的事项
- navicat创建MySql定时任务的方法详解(navicat创建MySql定时任务的方法详解)
- sqlserver表值函数用法(SQL Server数据库中的表名称、字段比较)
- SQL SERVER连接池
- sqlserver数据库中锁的4种类型(SQLSERVER对加密的存储过程、视图、触发器进行解密推荐)
- mysql8.0.25安装及配置超详细教程(MySQL8.0.21安装步骤及出现问题解决方案)
- 怎么新建数据库登录名用sql语句(T-sql语句修改SQL Server数据库逻辑名、数据库名、物理名的方法)
- mysqlworkbench怎么设置连接(详解MySQL Workbench使用教程)
- mysql从入门到实践万字详解(mysql基础知识扫盲)
- navicat for mysql连接测试失败(Navicat Premiun远程连接MySQL报错10038解决方案)
- mysql允许远程访问docker(Docker部署mysql远程连接 解决2003的问题)
- ()
- ()
- 800壮士拼死拖住30万日军 八佰 的真实历史,誓与阵地共存亡(800壮士拼死拖住30万日军)
- 演员陈创,火于 哮天犬 ,颠峰于 福贵 ,现状却令人唏嘘(演员陈创火于哮天犬)
- 幼小衔接-20以内看图读数 写数 数的组成练习题(幼小衔接-20以内看图读数)
- 你只要花上20天记单词,英语成绩就能从57提到100(你只要花上20天记单词)
热门推荐
- 云主机需要和哪些产品配合使用(云主机的存储安全如何保障?)
- flashfxp如何设置中文(flashfxp怎么用?flashfxp使用方法)
- sql自动化上线平台(sql自动化检查和分析工具 之soar和soar-web 安装和使用体验)
- 修改ubuntu 18.04的sources.list源为阿里或清华镜像的方法(修改ubuntu 18.04的sources.list源为阿里或清华镜像的方法)
- apache克隆后自动关闭(Apache 本地服务器启动后又自动停止解决办法)
- mysql 存储引擎有哪些(MySQL 常见存储引擎的优劣)
- C#选择排序
- 宝塔面板必须安装哪些软件(宝塔面板安装后必要的安全设置说明)
- ocr公式识别python(初探利用Python进行图文识别OCR)
- 微信小程序scrollview 截图(微信小程序scroll-view不能左右滑动问题的解决方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9