业务情景:有这样一张表:其中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,'审核通过')</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) 收藏的更多相关文章

  1. max_flow(Edmond_Karp) 分类: ACM TYPE 2014-09-02 10:47 92人阅读 评论(0) 收藏

    #include <cstdio> #include <iostream> #include <cstring> #include<queue> usi ...

  2. ubuntu14.04使用root用户登录桌面 分类: 学习笔记 linux ubuntu 2015-07-05 10:30 199人阅读 评论(0) 收藏

    ubuntu安装好之后,默认是不能用root用户登录桌面的,只能使用普通用户或者访客登录.怎样开启root用户登录桌面呢? 先用普通用户登录,然后切换到root用户,然后执行如下命令: vi /usr ...

  3. iOS越狱包 分类: ios相关 app相关 2015-06-10 10:53 152人阅读 评论(0) 收藏

    编译完了的程序是xxx.app文件夹,我们需要制作成ipa安装包,方便安装 找一个不大于500*500的png图片(程序icon图标即可),改名为:iTunesArtwork,注意不能有后缀名. 建立 ...

  4. Oracle备份与恢复介绍(物理备份与逻辑备份) 分类: Oracle 2015-07-27 22:59 15人阅读 评论(0) 收藏

    算是挺全的了,有命令有真相 原文链接:http://blog.chinaunix.net/uid-354915-id-3525989.html 一.Oracle备份方式分类: Oracle有两类备份方 ...

  5. DateTime日期格式获取 分类: C# 2014-04-15 10:36 233人阅读 评论(0) 收藏

    c#.net 获取时间年月日时分秒格式 //获取日期+时间 DateTime.Now.ToString();            // 2008-9-4 20:02:10 DateTime.Now. ...

  6. 博弈论入门小结 分类: ACM TYPE 2014-08-31 10:15 73人阅读 评论(0) 收藏

    文章原地址:http://blog.csdn.net/zhangxiang0125/article/details/6174639 博弈论:是二人或多人在平等的对局中各自利用对方的策略变换自己的对抗策 ...

  7. SQL 计算两个时间之差 分类: SQL Server 2014-07-04 10:57 119人阅读 评论(0) 收藏

    SQL语句: A,B为两个字段,A为开始时间,B为结束时间,ss为秒. SELECT datediff(ss,A,B)  FROM Table 详细:http://www.w3school.com.c ...

  8. ETL概述 分类: H2_ORACLE 2013-08-23 10:36 344人阅读 评论(0) 收藏

    转自:http://blog.csdn.net/leosoft/article/details/4279536 ETL,Extraction-Transformation-Loading的缩写,中文名 ...

  9. __int64 与long long 的区别 分类: Brush Mode 2014-08-14 10:22 64人阅读 评论(0) 收藏

    //为了和DSP兼容,TSint64和TUint64设置成TSint40和TUint40一样的数 //结果VC中还是认为是32位的,显然不合适 //typedef signed long int    ...

随机推荐

  1. centos 终端 字体颜色

    默认情况下,没有颜色. https://www.centos.org/docs/2/rhl-gsg-en-7.2/ls-color.html git也默认没有颜色,破解如下: git config - ...

  2. mysql中,主键与普通索引

    一.什么是索引?索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录.表里 ...

  3. svn提交报错:svn: Aborting commit:XXXXXremains in conflict

    Svn服务器上的对应内容,在上次Update后已被别人修改了,而我也做了修改,造成冲突.先备份自己的修改,从SVN上取一份别人的修改覆盖自己的文件,然后合并自己的修改进去,最后Commit.可以先更新 ...

  4. 常见概率组合题目总结quickstart

    [本文链接] http://www.cnblogs.com/hellogiser/p/interview-questions-quickstart-for-combination-permutatio ...

  5. iso网络各层协议

    (1)网卡的作用就是把数据进行串并转换(串连数据是比特流形式的,存在与本计算机内部,而计算机与计算机之间是通过帧形式的数据来进行数据传输的),MAC子层规定了如何在物理线路上传输的frame,LLC的 ...

  6. spring + myBatis 常见错误:@Autowired注解失败

    今天配置spring+myBatis的时候,使用注解@Autowired把持久层dao注入service层的时候总是报错. 查了好久才发现,居然是配置文件路径写错了.basepackge的路径一定要正 ...

  7. [ 转]Collections.unmodifiableList方法的使用与场景

    在公司接触到Collections.unmodifiableList(List<? extends T> list)) 觉得用法挺特殊的,所以学习了下,简单而言,看名字就知道,将参数中的L ...

  8. 【leetcode】LRU Cache(hard)★

    Design and implement a data structure for Least Recently Used (LRU) cache. It should support the fol ...

  9. 【mongo】mongo数据转json时特殊类型处理

    mongo数据库中的有些数据类型是无法用json序列化的,比如ObjectId或者datetime.datetime类型. 可以通过json.JSONEncoder来处理 import json im ...

  10. objective-c字典

     1 //        初始化一个空字典  2 //        NSDictionary *dictionary = [[NSDictionary alloc] init];  3 //     ...