开新帖继续探讨昨天的问题

plutu 2011-02-28 11:35:47
问题链接 http://topic.csdn.net/u/20110227/23/cc310e9f-bdd1-4ef9-a2b8-30187bef8f25.html?seed=1245641460&r=71847119#r_71847119 新需求在后边,就是为了考核需要对各个分公司的销售团队也要分别统计
...全文
57 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
plutu 2011-02-28
  • 打赏
  • 举报
回复
谢谢,我对你提的这几项还用的真是不多
Shawn 2011-02-28
  • 打赏
  • 举报
回复
CREATE TABLE TEST
(
日期 SMALLDATETIME,
销售公司 CHAR (10),
产品名称 CHAR(10),
销售额 SMALLINT,
销售团队 CHAR(12)
)
INSERT TEST
SELECT '2011-02-01 ','北京公司','甲产品',1,'A团队' union all
SELECT '2011-02-01 ','北京公司','乙产品',2,'B团队' union all
SELECT '2011-02-01 ','上海公司','甲产品',3,'B团队' union all
SELECT '2011-02-01 ','上海公司','乙产品',4,'A团队' union all
SELECT '2011-02-02 ','北京公司','甲产品',5,'B团队' union all
SELECT '2011-02-02 ','北京公司','乙产品',6,'A团队' union all
SELECT '2011-02-02 ','上海公司','甲产品',7,'A团队' union all
SELECT '2011-02-03 ','北京公司','乙产品',8,'B团队' union all
SELECT '2011-02-03 ','上海公司','乙产品',9,'A团队' union all
SELECT '2011-02-03 ','上海公司','丙产品',10,'A团队'
GO

--SQL
DECLARE @date DATETIME
SET @date = '2011-02-03 00:00:00'

SELECT
销售公司 = (CASE WHEN GROUPING(销售公司) = 0 THEN 销售公司 ELSE '公司合计' END),
销售团队 = (CASE WHEN GROUPING(销售团队) = 0 THEN 销售团队 ELSE '团队合计' END),
产品名称 = (CASE WHEN GROUPING(产品名称) = 0 THEN 产品名称 WHEN GROUPING(销售公司) = 0 THEN '当日合计' ELSE '总合计' END),
销售额 = SUM(CASE WHEN 日期 = @date THEN 销售额 ELSE 0 END),
本日止累计 = SUM(销售额)
FROM Test a
WHERE 日期 <= @date
GROUP BY 销售公司, 销售团队 ,产品名称
WITH ROLLUP
--RESULT
/*
销售公司 销售团队 产品名称 销售额 本日止累计
北京公司 A团队 甲产品 0 1
北京公司 A团队 乙产品 0 6
北京公司 A团队 当日合计 0 7
北京公司 B团队 甲产品 0 5
北京公司 B团队 乙产品 8 10
北京公司 B团队 当日合计 8 15
北京公司 团队合计 当日合计 8 22
上海公司 A团队 丙产品 10 10
上海公司 A团队 甲产品 0 7
上海公司 A团队 乙产品 9 13
上海公司 A团队 当日合计 19 30
上海公司 B团队 甲产品 0 3
上海公司 B团队 当日合计 0 3
上海公司 团队合计 当日合计 19 33
公司合计 团队合计 总合计 27 55
*/
--#1. 学习一下ROLLUP
--#2. 学习一下GROUPING
--#3. 注意GROUP BY 销售公司, 销售团队 ,产品名称 字段的顺序对结果的影响

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧