加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

用CASE WHEN实现sqlserver数据库的分类汇总功能

发布时间:2020-12-12 15:24:47 所属栏目:MsSql教程 来源:网络整理
导读:/*用CASE WHEN实现sqlserver数据库的分类汇总功能*/ /*例1:统计个数*/ /*表结构 id? cityid? major 1?? 1??????? ?A 2?? 1??????? ?B 3?? 2??????? ?B 4?? 2??????? ?A 5?? 1??????? ?A 6?? 2? ????? B 7?? 1??????? C 8?? 2??????? ?C 结果: cityId? A? B

/*用CASE WHEN实现sqlserver数据库的分类汇总功能*/

/*例1:统计个数*/
/*表结构
id? cityid? major
1?? 1??????? ?A
2?? 1??????? ?B
3?? 2??????? ?B
4?? 2??????? ?A
5?? 1??????? ?A
6?? 2? ????? B
7?? 1??????? C
8?? 2??????? ?C

结果:
cityId? A? B? C
1??????? 2? 1? 1
2??????? 1? 2? 1
*/

SELECT cityId,SUM(CASE WHEN major='A' THEN 1 ELSE 0 END) AS 'A',
????????????????????? SUM(CASE WHEN major='B' THEN 1 ELSE 0 END) AS 'B',
???????????????????? ?SUM(CASE WHEN major='C' THEN 1 ELSE 0 END) AS 'C'
?????????? ?FROM TestCase1 GROUP BY cityId


/*例1:统计总和数*/
/*表结构
Id?cityId?catalogId?Num
1?? 1??????? A???????????? ?3
2?? 1??????? B???????????? ?5
3?? 2??????? A???????????? ?8
4?? 2??????? B??????????? ?2
5?? 1??????? A???????????? 1
6?? 1??????? B??????????? ?2
7?? 2??????? C??????????? 3
8?? 2??????? C??????????? 4
9?? 1??????? C??????????? 1
10?? 1???????C???????? ? 2
11?? 2?????? A?????????? 3
12?? 2?????? B???????? ??4

?

结果:
cityId? A????? B???? C?? 总计
1??????? 4???? ?7???? 3? 14
2????? ?11??? ?6???? 7? 24

*/

SELECT cityId,SUM(CASE WHEN catalog='A' THEN num ELSE 0 END) AS 'A',?????????????????????? ?SUM(CASE WHEN catalog='B' THEN num ELSE 0 END) AS 'B',????????????????????? ?SUM(CASE WHEN catalog='C' THEN num ELSE 0 END) AS 'C',?????????????????????? SUM(Num) as '总计'??????????? ?????? FROM TestCase2 GROUP BY cityId

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读