博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MS SQL 合并结果集并求和 分类: SQL Server 数据库 ...
阅读量:5214 次
发布时间:2019-06-14

本文共 1930 字,大约阅读时间需要 6 分钟。

业务情景:有这样一张表:其中Id列为表主键,Name为用户名,State为记录的状态值,Note为状态的说明,方便阅读。

需求描述:需要查询出这样的结果:某个人某种状态的记录数,如:张三,待审核记录数,审核中记录数,审核通过记录数;大概像这样:

解决方案:

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,'审核通过')
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           )       )tempGROUP BY       NAME

这里用到两个知识点:

1.UNION 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

2.GROUP BY + 聚合函数(如SUM, COUNT, MAX, AVG等)统计数据。

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/zhangqs008/p/4687625.html

你可能感兴趣的文章
第三章家庭作业3.65
查看>>
javascript有哪些优秀的库,把你喜欢的都说出来吧
查看>>
Web后端 JAVA学习之路
查看>>
Arc076_E Connected?
查看>>
Java线程:新特征-锁(上)(转)
查看>>
MySQL Troubleshoting:Waiting on query cache mutex
查看>>
盒子模型&position定位
查看>>
docker容器里设置中文时区
查看>>
微服务应用日志处理与组件封装
查看>>
springmvc的异常处理
查看>>
Python+Selenium与Chrome如何进行完美结合
查看>>
Windows10一周年庆典壁纸
查看>>
kibana对logstash监控获取不到数据
查看>>
UPC 2224 Boring Counting ★(山东省第四届ACM程序设计竞赛 tag:线段树)
查看>>
IIS7上设置MIME让其支持android和Iphone的更新下载
查看>>
数据库系统原理
查看>>
leetcode 947. Most Stones Removed with Same Row or Column
查看>>
mong 按 geometry 搜索 地理位置信息
查看>>
框架网址和其他的一些网址
查看>>
angular ng-class\tab切换(从服务器引入数据)或用指令写
查看>>