MS SQL 合并结果集并求和 分类: SQL Server 数据库 2015-02-13 10:59 93人阅读 评论(0) 收藏
2015-02-13 10:59
483 查看
业务情景:有这样一张表:其中Id列为表主键,Name为用户名,State为记录的状态值,Note为状态的说明,方便阅读。
需求描述:需要查询出这样的结果:某个人某种状态的记录数,如:张三,待审核记录数,审核中记录数,审核通过记录数;大概像这样:
解决方案:
1.建表和初始化测试数据:
这里用到两个知识点:
1.UNION 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
2.GROUP BY + 聚合函数(如SUM, COUNT, MAX, AVG等)统计数据。
需求描述:需要查询出这样的结果:某个人某种状态的记录数,如:张三,待审核记录数,审核中记录数,审核通过记录数;大概像这样:
解决方案:
1.建表和初始化测试数据:
--1.建表语句 CREATE TABLE [dbo].[Content] ( [Id] [int] NULL, [Name] [nvarchar](50) NULL, [State] [int] NULL, [Note] [nvarchar](50) NULL, ) GO --2.初始化数据 INSERT INTO CONTENT VALUES(1,'张三',1,'待审核') INSERT INTO CONTENT VALUES(2,'张三',2,'审核中') INSERT INTO CONTENT VALUES(3,'张三',2,'审核中') INSERT INTO CONTENT VALUES(4,'李四',1,'待审核') INSERT INTO CONTENT VALUES(5,'李四',2,'审核中') INSERT INTO CONTENT VALUES(5,'李四',3,'审核通过')</span>2.查询语句:
SELECT NAME, SUM(审核通过) AS '审核通过', SUM(待审核) AS '待审核', SUM(审核中) AS '审核中' FROM ( ( SELECT NAME, COUNT(*) AS '审核通过', 0 AS '审核中', 0 AS '待审核' FROM CONTENT WHERE [STATE] = 3 AND NAME IN ('张三', '李四') GROUP BY NAME ) UNION ( SELECT NAME, 0 AS '审核通过', COUNT(*) AS '审核中', 0 AS '待审核' FROM CONTENT WHERE [STATE] = 2 AND NAME IN ('张三', '李四') GROUP BY NAME ) UNION ( SELECT NAME, 0 AS '审核通过', 0 AS '审核中', COUNT(*) AS '待审核' FROM CONTENT WHERE [STATE] = 1 AND NAME IN ('张三', '李四') GROUP BY NAME ) )temp GROUP BY NAME</span>
这里用到两个知识点:
1.UNION 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
2.GROUP BY + 聚合函数(如SUM, COUNT, MAX, AVG等)统计数据。
相关文章推荐
- MS SQL 合并结果集并求和 分类: SQL Server 数据库 2015-02-13 10:59 92人阅读 评论(0) 收藏
- 修改MS SQL忽略大小写 分类: SQL Server 数据库 2015-06-19 09:18 33人阅读 评论(0) 收藏
- 修改MS SQL忽略大小写 分类: SQL Server 数据库 2015-06-19 09:18 34人阅读 评论(0) 收藏
- MS SQL与Oracle常用函数对比 分类: 数据库 2009-11-05 23:41 259人阅读 评论(0) 收藏
- MS SQLServer 批量附加数据库 分类: SQL Server 数据库 2015-07-13 11:12 30人阅读 评论(0) 收藏
- MS SQL数据批量备份还原(适用于MS SQL 2005+) 分类: SQL Server 数据库 2015-03-10 14:32 103人阅读 评论(0) 收藏
- MS SQL数据批量备份还原(适用于MS SQL 2005+) 分类: SQL Server 数据库 2015-03-10 14:32 104人阅读 评论(0) 收藏
- SQLite3 一列多行合并为一列一行 分类: 数据库 2013-06-25 17:02 1251人阅读 评论(0) 收藏
- SQL 存储过程 分页 分类: SQL Server 2014-05-16 15:11 449人阅读 评论(0) 收藏
- HTMLParser解析网页,提取链接地址、标题名称,并插入数据库 分类: python 小练习 HTMLParser 2014-02-19 09:57 519人阅读 评论(0) 收藏
- 数据库崩溃后对redo log的使用 分类: H2_ORACLE 2013-02-04 14:05 309人阅读 评论(0) 收藏
- SQL对程序性能的影响 分类: 数据库 2009-11-14 04:06 327人阅读 评论(0) 收藏
- oracle 数据库转换成mysql工具:ora2mysqcn 分类: database 2013-08-14 10:21 541人阅读 评论(0) 收藏
- #小练习 合并首字母相同的男孩、女孩姓名 (最终版) 分类: python 小练习 2013-11-25 16:52 283人阅读 评论(0) 收藏
- SQL Server,Access数据库查询易混点和C#中parameter指定参数长度的优缺点 分类: MSSQLServer C# 2013-08-07 08:47 1171人阅读 评论(0) 收藏
- SQL SERVER Convert操作日期函数 分类: 数据库 2013-09-11 15:49 429人阅读 评论(0) 收藏
- winform Execl数据 导入到数据库(SQL) 分类: WinForm C# 2014-05-09 20:52 191人阅读 评论(0) 收藏
- Navicat For Mysql快捷键 分类: 数据库 2012-10-28 10:01 6176人阅读 评论(0) 收藏
- MySQL中导入中文字符解决方案[Data too long for column XX at row n] 分类: 数据库 2012-11-02 14:30 1286人阅读 评论(0) 收藏
- 使用SQLiteHelper创建数据库并插入数据 分类: H1_ANDROID 2013-11-05 22:44 1398人阅读 评论(0) 收藏