-
[转] 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 |
SELECT 部门名,COUNT(序号) as 人数,
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元,
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
SUM((CASE SIGN(工资-800)*SIGN(工资-1000) /**//*用*来实现<和>功能*/
WHEN -1 THEN 1 ELSE 0 END)+(CASE 工资
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
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 部门名
-
相关阅读:
html优化
HTML练习(网页计算器)
hdu--4574 Bombs(dfs)
Robots at Warehouse(搜索+vector的使用)
poj 2111 Millenium Leapcow(记忆化搜索)
Codeforces Round #408 (Div. 2) C. Bank Hacking(暴力啊!暴力)
Gym
Gym
浙江省赛--D
浙江省赛--C
-
原文地址:https://www.cnblogs.com/temptation/p/1121149.html
Copyright © 2020-2023
润新知