SQL一次性查询一个字段不同条件下的统计结果

参考了一下这篇文章:https://blog.csdn.net/xichenguan/article/details/51764100 , 感谢原作者

有两个表,分别存放了【操作员】和【单据】,要根据单据的不同类型来分类汇总(销售单、销售退货单,笔数和金额),并且显示在同一张表里,不想用做两次查询再合并的方法,研究了一下,终于搞定:

d_employee表

d_bilndx表

代码如下:

select  b.inputid as 开单员编号,
        e.fullname as 开单员, 

        isnull( ( select count(*)
          from d_bilndx
          where draft=3 and biltype=12 and d_bilndx.inputid=e.id
        ), 0) as ‘销售开单笔数‘,

        isnull( ( select sum(d_bilndx.amount)
          from d_bilndx
          where draft=3 and biltype=12 and d_bilndx.inputid=e.id
        ), 0) as ‘销售开单金额‘,

        isnull( ( select count(*)
          from d_bilndx
          where draft=3 and biltype=13 and d_bilndx.inputid=e.id
        ), 0) as ‘销售退单笔数‘,

        isnull( ( select sum(d_bilndx.amount)
          from d_bilndx
          where draft=3 and biltype=13 and d_bilndx.inputid=e.id
        ), 0) as ‘销售退单金额‘,

        count(b.biltype) as 开单总笔数,
        sum(b.Amount) as 开单金额

from d_bilndx as b
left join d_employee as e
on b.inputid=e.id
where b.draft=3 and ( b.biltype=12 or b.biltype=13 )
group by b.inputid, e.fullname, e.id

得到完美结果:

原文地址:https://www.cnblogs.com/skysowe/p/9117099.html

时间: 2024-10-08 00:32:14

SQL一次性查询一个字段不同条件下的统计结果的相关文章

SQL一次性查询一个字段不同条件下的统计结果(另一张表的统计数量)

做另一张表的统计,比如本部门有多少在职人员.本岗位有多少女生. 有两个表,分别存放了[操作员]和[单据],要根据单据的不同类型来分类汇总(销售单.销售退货单,笔数和金额),并且显示在同一张表里,不想用做两次查询再合并的方法,研究了一下,终于搞定: d_employee表 d_bilndx表 代码如下: select b.inputid as 开单员编号, e.fullname as 开单员, isnull( ( select count(*) from d_bilndx where draft=

linq查询一个字段的总和

(from s in dc.StockInItem   //所要查询单表 join si in dc.StockIn           //联合的表 on s.StockInID equals si.StockInID     //两个表联合的相同条件 where (s.ColorsID == int.Parse(colorID) && s.SizesID == int.Parse(sizeID) && s.ProductID == int.Parse(ProtectID

【语法】SQL中的case when then else end用法-解决一个字段根据条件取不同值

Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END 这两种方式,可以实现相同的功能.简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式. 还有一个需要

mysql 中查询一个字段是否为null的sql

查询mysql数据库表中字段为null的记录: select * 表名 where 字段名 is null 查询mysql数据库表中字段不为null的记录: select * 表名 where 字段名 is not null 例如: select * from table where column is null; select * from table where column is not null;

sql查询一个字段不同值并返回

sql SELECT COUNT(字段),分组字段,SUM(字段),SUM(字段) FROM 表 GROUP BY 分组字段 java EntityWrapper<ProjectEntity> pp= new EntityWrapper<ProjectEntity>(); pp.eq("depcode", community); int proc = projectService.selectCount(pp); pp.setSqlSelect("CO

SQL Server 查询中文字段返回为空

昨晚维护系统数据时,遇到个奇怪现象.明明数据库里有数据,查询结果就是返回为空.具体情况是这样的,查询工作日志表里关于工作描述的情况,以中文内容匹配工作描述字段,其中匹配内容里包含有空格. 尝试去掉第一个空格后面内容,查询有结果.而加多一个空格就没有了.不管是"=" 或者"like"匹配,均无结果. 于是,查看下工作描述字段类型,是nvarchar类型.想起来了,在匹配字符前加N. SQL语句: select * from 工作日志表 where 工作描述字段 =N'

sql server 怎样用SQL语句查询一个数据库中的所有表?

搜了一大堆做个总结,以下是Sql Server中的方法,备忘下 1,利用sysobjects系统表 在这个表中,在数据库中创建的每个对象(例如约束.默认值.日志.规则以及存储过程)都有对应一行,我们在该表中筛选出xtype等于U的所有记录,就为数据库中的表了. 示例语句如下:: select * from sysobjects where xtype='U' 注意:在SQL SERVER2005中,出现了sys.objects目录视图来代替sysobjects系统表,我们在SQL SERVER2

sql数据库查询结果字段包含换行符导致复制到Excel发生错位问题的解决

问题描述:在工作过程中,有时会遇到这样的问题,写好sql查询语句在数据库中查询数据,看到行数(比如说是1000行),但是把查询结果复制到Excel里面,却发生了行列错位问题,而导致Excel里面的行数是超过1000行的,造成数据行数的不一致. 问题重现:字段值包含char(10)换行符,复制字段值到Excel. 根源:某些行列对应单元格包含了换行符,导致复制到Excel里面发生错位. 解决方案:方案1(推荐):把有问题的字段值,用英文双引号括起来,这样就能把字段值里面的换行符限制在正确的Exce

SQL语句查询某字段不同数据的个数(DISTINCT 的使用)

今天做了一个题,学到了一个知识点: 有一个高速收费表VF,如下: 统计收费涉及的车辆有多少: SQL语句: SELECT  COUNT(DISTINCT  VchReg)  from  VF ; 其中DISTINCT翻译为明显的.清楚的,在这里用作消除重复行,在此为消除VF表中VchReg字段的重复行,得到的即为涉及的车辆.