sqlserver 根据两个表的数据,进行数据汇总的存储过程写法

safawo 2018-08-23 10:11:25
有两个表,一个表对立面的客户进行了分级,如下
客户代码 客户名称 客户分类
545 蒋少鹏 C
338 王于平 F
567 曹坤 C
448 蒋宗强 G
448 赵丽 E
123 刘小珂 C
130 曹王扬 C
132 王平 C
136 蒲川 C
142 韩小淼 C


另外一个表中,是每个客户每天购买的商品品种,如下:
日期 客户代码 客户名称 商品 买量
20161010 241 吴立伟 红糖 19
20161010 374 何中军 白糖 67
20161010 451 杜月娟 白糖 98
20161010 569 徐小进 白糖 11
20161010 220 璐琳 白糖 250
20161010 220 璐琳 红糖 160
20161010 135 润美 白糖 19
20161010 121 艳彬 枣子 8
20161010 562 周磊 白糖 20
20161010 139 刘中磊 白糖 8
20161010 596 张丹 黑胡椒 7
20161010 667 夏虎 辣椒 6


现在需要根据客户分类的表,和客户购买商品的记录表,进行数据汇总,得到某一天,C D E F G 等各类客户某个商品总计买了多少?

比如C类客户在20161010这天总计白糖买了多少?D类客户在20161010这天总计白糖买了多少? E类客户在20161010这天总计辣椒买了多少? 等等

不知道这个存储过程怎么写,求指教,谢谢。

...全文
172 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Lyman_ 2018-08-24
--> 测试数据:#customer
if object_id('tempdb.dbo.#customer') is not null drop table #customer
create table #customer([客户代码] int,[客户名称] varchar(6),[客户分类] varchar(1))
insert #customer
select 545,'蒋少鹏','C' union all
select 338,'王于平','F' union all
select 567,'曹坤','C' union all
select 448,'蒋宗强','G' union all
select 447,'赵丽','E' union all
select 123,'刘小珂','C' union all
select 130,'曹王扬','C' union all
select 132,'王平','C' union all
select 136,'蒲川','C' union all
select 142,'韩小淼','C'

--> 测试数据:#order
if object_id('tempdb.dbo.#order') is not null drop table #order
create table #order([日期] datetime,[客户代码] int,[客户名称] varchar(6),[商品] varchar(6),[买量] int)
insert #order
select '20161010',545,'蒋少鹏','红糖',19 union all
select '20161010',338,'王于平','白糖',67 union all
select '20161010',567,'曹坤','白糖',98 union all
select '20161010',448,'蒋宗强','白糖',11 union all
select '20161010',447,'赵丽','白糖',250 union all
select '20161010',123,'刘小珂','红糖',160 union all
select '20161010',130,'曹王扬','白糖',19 union all
select '20161010',132,'王平','枣子',8 union all
select '20161010',136,'蒲川','白糖',20 union all
select '20161010',142,'韩小淼','白糖',8 union all
select '20161010',142,'韩小淼','黑胡椒',7 union all
select '20161010',142,'韩小淼','辣椒',6

SELECT a.客户分类, b.日期, b.商品, SUM(b.买量) 买量
FROM #customer a
LEFT JOIN #order b
ON b.客户代码 = a.客户代码
GROUP BY a.客户分类, b.日期, b.商品;
/*
客户分类 日期 商品 买量
C 2016-10-10 00:00:00.000 白糖 145
C 2016-10-10 00:00:00.000 黑胡椒 7
C 2016-10-10 00:00:00.000 红糖 179
C 2016-10-10 00:00:00.000 辣椒 6
C 2016-10-10 00:00:00.000 枣子 8
E 2016-10-10 00:00:00.000 白糖 250
F 2016-10-10 00:00:00.000 白糖 67
G 2016-10-10 00:00:00.000 白糖 11
*/
回复
RINK_1 2018-08-23

select 客户分类,商品,SUM(买量) as 小计
from 客户表 A
join 销售表 B on A.客户代码=B.客户代码
where 日期='20161010'
group by 客户分类,商品
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2018-08-23 10:11
社区公告
暂无公告