1、创建表单内容,添加数据

--创建一个a表
CREATE TABLE a(
--设置name字段,属性varchar 
NAME VARCHAR(255),
--设置ERP字段,属性varchar 
ERP  VARCHAR(255),
--设置DATE字段,属性date 
DATE DATE,
--设置name1字段,属性varchar 
NAME1 VARCHAR(255),
--设置amount 字段,属性int 
amount int
)
INSERT a SELECT '张三','餐费','2019-12-11','中行','100'
union all SELECT '张三','礼品','2019-12-01','中行','100'
union all SELECT '张三','礼品','2019-11-12','中行','60'
union all SELECT '张三','礼品','2019-12-12','美行','60'
union all SELECT '张三','12','2019-12-12','中行','100'
union all SELECT '李四','餐费','2019-12-12','中行','50'
union all SELECT '王五','礼品','2019-12-12','中行','60'

2、查询反馈所有内容信息

SELECT * from a

SQL-Serve查询多条件聚合_sqlserver查询


3、根据多条件进行聚合汇总

--查询
select 
--查看name字段,并设置别名 姓名
name as '姓名',
--添加一个 餐费字段,并且设置别名 费用类型
'餐费' as '费用类型',
--查看date字段,并设置别名 月份
CONVERT(char(7),date,120) as '月份',
--查看name1字段,并设置别名客户 名称
name1 as '客户名称',
--查看 统计amount字段,并且命名 金额
SUM(a.amount) as '金额'
--从表a查看
from a
--设置查询条件
where 
--查询条件一、查询name为张三的返回值
name='张三' 
--and进行连接多个条件
AND 
--查询条件而、查询 ERP等于礼品或者餐费
(ERP='礼品' or ERP='餐费') 
--连接条件
AND
--条件三,查询时间大于2019-12-01
date >= '2019-12-01'
--条件四,结合聚合函数,根据一个或者多个列对结果集进行分组,group by a,b,c的用法:
--先按照a分组,如果a相同,再按照b分组,如果b相同,再按照c分组。最终统计的是最小分组的信息。
group by name,CONVERT(char(7),date,120),name1

SQL-Serve查询多条件聚合_sqlserver多条件查询_02

4、小结

首先where 条件,再 group by 条件、再 order by 条件

如果声明了 GROUP BY 子句,输出就分成匹配一个或多个数值的不同组里。 如果出现了 HAVING 子句,那么它消除那些不满足给出条件的组。

如果声明了 ORDER BY 子句,那么返回的行是按照指定的顺序排序的。 如果没有给出 ORDER BY,那么数据行是按照系统认为可以最快生成的方法给出的。

虽然 SELECT 语句的完整语法较复杂,但是其主要的子句可归纳如下:
  SELECT select_list
  [ INTO new_table ]
  FROM table_source
  [ WHERE search_condition ]
  [ GROUP BY group_by_expression ]
  [ HAVING search_condition ]
  [ ORDER BY order_expression [ ASC | DESC ] ]
  可以在查询之间使用 UNION 运算符,以将查询的结果组合成单个结果集。

也就是说,order by放在最后面。