SQL查询案例:行列转换[行转列, 使用 CASE WHEN 处理]
行列装换--使用CASE WHEN
测试表与测试数据
CREATE TABLE TestRowCol (
name VARCHAR(10),
place VARCHAR(10),
valuw INT
);
INSERT INTO TestRowCol VALUES ('张三', '东', 1);
INSERT INTO TestRowCol VALUES ('张三', '南', 2);
INSERT INTO TestRowCol VALUES ('张三', '西', 3);
INSERT INTO TestRowCol VALUES ('张三', '北', 4);
INSERT INTO TestRowCol VALUES ('李四', '东', 5);
INSERT INTO TestRowCol VALUES ('李四', '南', 6);
INSERT INTO TestRowCol VALUES ('李四', '西', 7);
INSERT INTO TestRowCol VALUES ('李四', '北', 8);
要求
将标题为
name place valuw
---------- ---------- -----------
修改为
Name 东 南 西 北
思路
CASE WHEN + GROUP BY处理
实现
SELECT
name,
SUM(CASE WHEN place = '东' THEN valuw ELSE '0' END) AS 东,
SUM(CASE WHEN place = '南' THEN valuw ELSE '0' END) AS 南,
SUM(CASE WHEN place = '西' THEN valuw ELSE '0' END) AS 西,
SUM(CASE WHEN place = '北' THEN valuw ELSE '0' END) AS 北
FROM
TestRowCol
GROUP BY
name
执行结果
name 东 南 西 北
---------- ----------- ----------- ----------- -----------
李四 5 6 7 8
张三 1 2 3 4
行列装换--使用PIVOT (SQL Server 2005 及以上版本可用)
测试表与测试数据
同行列装换--使用CASE WHEN
实现
SELECT
name,
tmp.[东] 东,
tmp.[南] 南,
tmp.[西] 西,
tmp.[北] 北
FROM
TestRowCol
PIVOT(
SUM(valuw)
FOR place IN ([东], [南], [西], [北] )
) tmp
ORDER BY
name
SQL查询案例:行列转换[行转列, 使用 CASE WHEN 处理]相关推荐
- kettle——入门操作-行列转换(行转列,字段拆分)
1.Row Normaliser,将一行多列数据转换为多行一列数据. 输入数据流: 计算器配置如下: 与计算器相连接的excel输出如下: Row Normaliser,设置如下, 与Row Norm ...
- 数据库系统原理与应用教程(052)—— MySQL 的数据完整性(十四):交叉表查询(行列转换)
数据库系统原理与应用教程(052)-- MySQL 的数据完整性(十四):交叉表查询(行列转换) 目录 数据库系统原理与应用教程(052)-- MySQL 的数据完整性(十四):交叉表查询(行列转换) ...
- SQL Server中行列转换 Pivot UnPivot (转载)
SQL Server中行列转换 Pivot UnPivot PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现PIVOT的一般语法是:PIV ...
- 【交叉表查询】行列转换的魅力
本文主要是讲一下行列转换,也就是大家经常讲的交叉表查询. 行列转换在实际的应用中非常的实用,可以大大的减少工作量. 很多时候,在Excel中处理数据时,我们需要统计每个月的销量或者需要填写每个月的销量 ...
- SQL Server pivot行列转换案例分析
通过Pivot进行行列转换 需求描述 需求:如果我们对订单表(Sales.Orders)里的客户编号(cust_id)以不同的货船编号(shipperid)为列,其对应的费用(freight)求和为值 ...
- SQL中PIVOT 行列转换
来源:http://www.studyofnet.com/news/295.html PIVOT通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列 ...
- Sql(presto语法) 实现行转列和列转行
这里的行列转换都是在presto语法下可编译实现(hive.sql会有一些差别) Sql语句:数据行转列(表a-to-表b)和 列转行(表b-to-表a) 1.行转列(sql语句) select co ...
- SQL Server:使用 PIVOT 行转列和 UNPIVOT 列转行
ylbtech-SQL Server:使用 PIVOT 行转列和 UNPIVOT 列转行 可以使用 PIVOT 和 UNPIVOT 关系运算符将表值表达式更改为另一个表.PIVOT 通过将表达式某一列 ...
- mysql行列转换case_浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用_MySQL...
bitsCN.com /*创建数据库*/ CREATE DATABASE tmp go USE tmp go /*创建数据库测试表*/ CREATE TABLE [Scores] ( [ID] INT ...
最新文章
- HTML5圆形线性渐变,css中linear-gradient()函数是干什么的?实现线性渐变的圆形边框(代码)...
- arcsde安装步骤_ArcGIS 9.3 安装之 SDE的安装及使用
- ZOJ 1743 Concert Hall Scheduling(DP)
- 回车与换行 ASCII
- 一行代码不用写,就可以训练、测试、使用模型,这个 star 量 1.5k 的项目帮你做到...
- hexo的yelee主题让文章呈现圆角效果
- 公司年会在民俗文化村举行
- 如何隐藏地址栏中的真实地址_Firefox推出Private Relay插件:可隐藏真实邮箱地址...
- 区块链应用开发人员_每个区块链开发人员都应该了解这些Web3和Metamask用例
- 安全上下文以及FACL
- Pycharm 主题字体推荐(亮色)
- pyecharts查看版本_pyecharts 安装及使用指南
- java接收任意键继续_正确实现“按任意键继续”功能
- 打印代码执行所耗费时间--毫秒
- 2017年度最值得读的AI论文 | CV篇 · 评选结果公布
- 关于在使用迅雷下载的时候,C盘一下爆满的问题
- 让大数据落地的正确姿势
- 2022-2027年中国气体绝缘金属封闭开关设备行业发展前景及投资战略咨询报告
- sothink swf decompiler反编译的常见错误
- 如何检查QFN封装焊接是否正确