[转] SQL Server中的行列转换问题
序号 | 性别 | 部门 | 工资 |
1 | 男 | 部门a | 800 |
2 | 女 | 部门b | 900 |
3 | 男 | 部门a | 400 |
4 | 女 | 部门d | 1400 |
5 | 男 | 部门e | 1200 |
6 | 男 | 部门f | 500 |
7 | 女 | 部门a | 300 |
8 | 男 | 部门d | 1000 |
9 | 女 | 部门d | 1230 |
10 | 女 | 部门b | 2000 |
11 | 男 | 部门c | 2000 |
12 | 男 | 部门b | 1200 |
最终显示
部门名 | 人数 | 男 | 女 | 小于800元 | 从800至999 | 从1000元至1190元 | 大于1200元 |
部门a | 3 | 2 | 1 | 2 | 1 | 0 | 0 |
部门b | 3 | 1 | 2 | 0 | 1 | 0 | 2 |
部门c | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
部门d | 3 | 1 | 2 | 0 | 0 | 1 | 2 |
部门e | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
部门f | 1 | 1 | 0 | 1 | 0 | 0 | 0 |
SUM(CASE 性别 WHEN 1 THEN 1 ELSE 0 END) as 男,
SUM(CASE 性别 WHEN 2 THEN 1 ELSE 0 END) as 女,
SUM(CASE SIGN(工资-800) WHEN -1 THEN 1 ELSE 0 END) as 小于800元,
SUM((CASE SIGN(工资-800)*SIGN(工资-1000) /**//*用*来实现<和>功能*/
WHEN -1 THEN 1 ELSE 0 END)+(CASE 工资
WHEN 800 THEN 1 ELSE 0 END)) as 从800至999, /**//*注意别名不能以数字开头*/
SUM((CASE SIGN(工资-1000)*SIGN(工资-1200)
WHEN -1 THEN 1 ELSE 0 END)+(CASE 工资
WHEN 1000 THEN 1 ELSE 0 END)) as 从1000元至1199元,
SUM((CASE SIGN(工资-1200) WHEN 1 THEN 1 ELSE 0 END)
+(CASE 工资 WHEN 1200 THEN 1 ELSE 0 END)) as 大于1200元
FroM 工资明细表
GROUP BY 部门名
转载于:https://www.cnblogs.com/temptation/archive/2008/03/25/1121149.html
[转] SQL Server中的行列转换问题相关推荐
- SQL Server中时间格式转换函数convert()的使用
convert(varchar(10),字段名,转换格式) CONVERT为日期转换函数,一般就是在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar, ...
- SQL Server中DateTime格式转换
SQL使用convert来取得datetime日期数据,以下实例包含各种日期格式的转换, 可以通过查询语句及查询结果来显示不同的格式,如果是Date格式也可以用: Select CONVERT(var ...
- SQL Server中行列转换 Pivot UnPivot (转载)
SQL Server中行列转换 Pivot UnPivot PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现PIVOT的一般语法是:PIV ...
- 倒置 mysql_SQL Server中的行列倒置技巧
行列倒置在sql server中是一种很常见的技巧,在做应用系统的时候,经常需要做一些统计功能避免不了使用行列倒置这个技巧,我小小的做了一下总结: 第一种:sql server 2000中使用case ...
- C# 学习笔记(18)操作SQL Server 中
C# 学习笔记(18)操作SQL Server 中 数据库基础操作 SQL语法可以参考 菜鸟教程 或者微软官方的SQL示例 注意SQL不区分大小写 查 1.基础查询 --最基础的查询语句, selec ...
- 细说SQL Server中的加密
简介 加密是指通过使用密钥或密码对数据进行模糊处理的过程.在SQL Server中,加密并不能替代其他的安全设置,比如防止未被授权的人访问数据库或是数据库实例所在的Windows系统,甚至是数据库所在 ...
- predicate 列存储索引扫描_在SQL SERVER中导致索引查找变成索引扫描的问题分析
SQL Server 中什么情况会导致其执行计划从索引查找(Index Seek)变成索引扫描(Index Scan)呢? 下面从几个方面结合上下文具体场景做了下测试.总结.归纳. 1:隐式转换会导致 ...
- SQL SERVER中什么情况会导致索引查找变成索引扫描
原文:SQL SERVER中什么情况会导致索引查找变成索引扫描 SQL Server 中什么情况会导致其执行计划从索引查找(Index Seek)变成索引扫描(Index Scan)呢? 下面从几个方 ...
- as cast float server sql_Sql Server中Float格式转换字符串varchar方法
SELECT CONVERT(varchar(100), CAST(@testFloat AS decimal(38,2))) SELECT STR(@testFloat, 38, 2) 从Excel ...
最新文章
- 工作如果没有方法,光靠苦力是不行的
- 第四章 遗传变异的分类
- 火爆抖音!各路神仙齐唱《蚂蚁呀嘿》,带你探索背后的原理!
- 修复SQL Server Compact数据库时遇到找不到指定的模块的异常
- Java源码解读--CopyOnWriteList写时复制集合容器
- 2018年4月1日 蓝桥杯 C/C++B组答案 明码
- QT学习:线程等待与唤醒
- JSON 数据 演示
- JS中 window.location.search的作用
- 在main函数前后执行的函数之 C语言
- Spring+Hiberate 多数据源的网文整理
- Idea导入web工程,并运行
- 深度学习训练出来的损失不收敛_学习率设置技巧,使用学习率来提升我们的模型...
- Docker系列教程26-Docker Compose控制服务启动顺序
- JUC笔记-同步器(AQS原理、ReentrantLock原理)
- win,linux双系统开机引导修复
- 电脑绘图软件有哪些可以简单使用的?
- 红旗linux操作系统怎样,红旗linux操作系统应该怎么用
- easyExcel实现动态表头设置以及单元格样式设置
- python舆情系统开发_用python搭建舆情监控