我的表有两列:名称和等级.看起来像这样:

NAME | GRADE

Adam | 1

Adam | 2

Adam | 2

Adam | 3

Frank | 2

Frank | 1

现在,我想创建如下所示的视图:

NAME | GRADE 1 | GRADE 2 | GRADE 3

Adam | 1 | 2 | 1

Frank | 1 | 1 | 0

我写了这个:

SELECT Name,

(SELECT COUNT(Grade)

FROM dbo.Rodzaj

WHERE Grade = '1') as Grade_1,

(SELECT COUNT(Grade)

FROM dbo.Rodzaj

WHERE Grade = '2) as Grade_2,

(SELECT COUNT(Grade)

FROM dbo.Rodzaj

WHERE Grade = '3') as Grade_3

FROM dbo.Rodzaj

GROUP BY Name

但这行不通…

我将不胜感激任何帮助

解决方法:

您要查找的内容称为“数据透视表”,它由一系列CASE语句完成,这些语句对每个条件应用1或0,然后对1和0进行SUM()检索计数.

SELECT

NAME,

SUM(CASE WHEN GRADE = 1 THEN 1 ELSE 0 END) AS GRADE1,

SUM(CASE WHEN GRADE = 2 THEN 1 ELSE 0 END) AS GRADE2,

SUM(CASE WHEN GRADE = 3 THEN 1 ELSE 0 END) AS GRADE3

FROM Rodzaj

GROUP BY NAME

请注意,如果您需要具有动态的列数,则必须使用脚本语言和循环来构造查询. (或存储过程中的循环)

标签:sql,mysql

来源: https://codeday.me/bug/20191201/2078623.html

mysql dbo_mysql-双重分组相关推荐

  1. MySQL:基础—数据分组

    MySQL:基础-数据分组 1.为什么要分组: 比如一个表中有多条订单记录,如上图,每条记录对应着一个商品,现在我要查询 每个商品被订购的单数 准备出货?也就是找到每个商品被订购的数量. 如果只找一个 ...

  2. java 索引排序_Java培训MySQL之排序分组优化索引的选择

    索引的选择 ①首先,清除emp上面的所有索引,只保留主键索引! drop index idx_age_deptid_name on emp; ②查询:年龄为30岁的,且员工编号小于101000的用户, ...

  3. Mysql 的 排序分组优化

    Mysql 的 排序分组优化 where 条件和 on的判断这些过滤条件,作为优先优化的部门,是要被先考虑的!其次,如果有分组和排序,那么也要考虑grouo by 和order by. 1. 无过滤不 ...

  4. mysql按月份分组查询_mysql如何按月份分组查询

    mysql按月份分组查询的方法:根据format字符串格式化date值,语法为[DATE_FORMAT(date,format)],其中[%M ]为月的名字. mysql按月份分组查询的方法:sele ...

  5. mysql 如何时间分组,mysql如何按时间分组查询

    mysql按时间分组查询的方法: DATE_FORMAT(date,format):函数用于以不同的格式显示日期/时间数据. 参数: date:表中时间类型的字段名称. format:时间输出格式. ...

  6. 使用mysql语句进行分组查询

    使用mysql语句进行分组查询 1 作用 对整个数据表的某几个字段进行分组,然后通过分组函数得到我们想要的结果 2 如何用 2.1 只分一个组 2.1.1 本质 就是根据分组字段把整个表的数据分为几组 ...

  7. MySQL数据库,分组函数篇

    MySQL数据库,分组函数篇 1.分组函数 极值 求和 平均值 列数和 2.分组查询 3.小练习 4.大BOSS 1.分组函数 极值 示例表内容见此篇文章 找出最高工资: mysql> sele ...

  8. mysql双重分组没有值也要显示_mysql 统计数据,按照日期分组,把没有数据的日期也展示出来...

    因为业务需求,要统计每天的新增用户并且要用折线图的方式展示. 如果其中有一天没有新增用户的话,这一天就是空缺的,在绘制折线图的时候是不允许的,所有要求把没有数据的日期也要在图表显示. 查询2019-0 ...

  9. mysql 以时间段分组_根据mysql 按日期或者时间段 分组 统计的查询

    SELECT DATE_FORMAT( deteline, "%Y-%m-%d %H" ) , COUNT( * ) FROM test GROUP BY DATE_FORMAT( ...

  10. mysql group by 分组查询

    分组的SQL语句有2个: group by 和分组聚合函数实现 partition by (oracle和postgreSQL中的语句)功能 group by + having 组合赛选数据 注意:h ...

最新文章

  1. oracle的have,Does oracle have “auto number” data type [duplicate]
  2. JAXP进行DOM和SAX解析
  3. gis等时圈怎么做_如何批量制作交通等时圈
  4. bitcoin-memorypool源码分析
  5. mysql数据库分析结果与结论_mysql数据库show processlist结果分析
  6. SysUtils.UpperCase、SysUtils.LowerCase - 大小写转换
  7. html 弹出播放器,jQuery点击弹出视频播放器代码
  8. java开发职业规划
  9. Reset 重置按钮
  10. 豆瓣电影数据分析案例
  11. 排序算法-归并排序详细图解
  12. 重装系统后通过修改注册表实现记录还原
  13. Python实现平行坐标图的两种方式
  14. SpringMVC简易的程序以及基本原理
  15. XML是什么,它可以做什么?——写给XML入门者
  16. 【 CCIE考试分数怎么算?】
  17. python 发送邮件 普通邮件 HTML 发送带附件 群发邮件
  18. Intrepid 英特佩斯 Vehicle spy vspy3使用
  19. 管理软件Jira Service Desk使用教程之如何将Jira Cloud用于Slack?
  20. 5大常用的免费OCR软件

热门文章

  1. AVS 帧内预测模式的汇编优化
  2. wince ./configure
  3. Linux 的 chmod 命令,对一个目录及其子目录所有文件添加权限
  4. java日期工具类DateUtil
  5. Map 四种获取 key 和 value 值的方法,以及对 map 中的元素排序
  6. localStorage存、取数组
  7. 读书笔记011:《伤寒论》- 手厥阴心包经
  8. shell基础05 处理用户输入
  9. Jquery 多行拖拽图片排序 jq优化
  10. 光荣之路测试开发面试linux考题之四:性能命令