SQL多表查询的汇总统计问题!

brusw 2016-02-13 12:29:36

坛友们新年快乐,猴年吉祥
小弟想请教一个SQL查询的问题,各个表如上图所示,需求是查询出每个校区的总消费(Network表:CostBaidu列+CostSoso列+Cost360列+CostOther列)和总截量数(NetworkConsult表:CutCount列)
遇到的问题:只关联School表与Network表时可以统计出每个校区的总消费(正常的),再关联NetworkConsult表后统计的消费金额就变多了,请问该怎么写出这个SQL语句呢???

...全文
471 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ginnnnnnnn 2016-02-14
  • 打赏
  • 举报
回复
这个的话也简单啊,你可以先把本月,本周,本年这3个值做成3个变量,然后用 sum(case CreateTime > 本日 then 1 else 0 end ) as 本日统计,这样就可以实现了
brusw 2016-02-14
  • 打赏
  • 举报
回复
引用 7 楼 KanzakiOrange 的回复:
你这个汇总如果在network 里面,使用 unpivot 来进行一个列转行,百度一下这个用法就有了
还需要统计其它的表,没用unpivot,我愣是一个个用UNION ALL解决了
Ginnnnnnnn 2016-02-14
  • 打赏
  • 举报
回复
你这个汇总如果在network 里面,使用 unpivot 来进行一个列转行,百度一下这个用法就有了
brusw 2016-02-14
  • 打赏
  • 举报
回复
引用 5 楼 KanzakiOrange 的回复:
这个的话也简单啊,你可以先把本月,本周,本年这3个值做成3个变量,然后用
sum(case CreateTime > 本日 then 1 else 0 end ) as 本日统计,这样就可以实现了

如果消费类型不固定,该怎么处理呢,比如这种坑爹的,咨询师是需要查出来的
brusw 2016-02-13
  • 打赏
  • 举报
回复
引用 3 楼 KanzakiOrange 的回复:
要不你就先去重再left jion ,要不就自己定个规则,如果有多条,该怎么取。

多谢指点,先将NetworkConsult表按NetworkID列分组并SUM(CutCount)再左连接就可以了
SELECT SchoolName,SUM(ISNULL(CostBaidu,0) + ISNULL(CostSoso,0) + ISNULL(Cost360,0) + ISNULL(CostOther,0))
CostTotal,SUM(ISNULL(CutCount,0)) CutCount FROM School LEFT JOIN (SELECT * FROM Network) Network ON School.SchoolID = Network.SchoolID
LEFT JOIN (SELECT NetworkID,SUM(ISNULL(CutCount,0)) CutCount FROM NetworkConsult GROUP BY NetworkID)NetworkConsult ON Network.NetworkID = NetworkConsult.NetworkID
GROUP BY SchoolName,CutCount

可否再请教一个问题呢?Network表有一个CreateTime字段表示创建时间(截图没截下来),如何实现下图中的本日、本周、本月、本年度的统计呢,重点是不知道该怎样显示到一行中去
Ginnnnnnnn 2016-02-13
  • 打赏
  • 举报
回复
要不你就先去重再left jion ,要不就自己定个规则,如果有多条,该怎么取。
brusw 2016-02-13
  • 打赏
  • 举报
回复
引用 1 楼 KanzakiOrange 的回复:
那就会不会是NetWork 和 NetworkConsult 存在1对多的关系,你排查的时候可以先把数据查出来不汇总,看下是否这样的情况
SchoolName                                         CostBaidu             CostSoso              Cost360               CostOther             CutCount
-------------------------------------------------- --------------------- --------------------- --------------------- --------------------- -----------
科技职校                                               350.00                100.00                NULL                  20.50                 22
科技职校                                               350.00                100.00                NULL                  20.50                 10
科技职校                                               350.00                100.00                NULL                  20.50                 5
科技职校                                               367.00                255.00                102.00                NULL                  14
科技职校                                               367.00                255.00                102.00                NULL                  NULL
科技职校                                               367.00                255.00                102.00                NULL                  5
交通学院                                               1500.00               NULL                  420.60                NULL                  18
交通学院                                               1500.00               NULL                  420.60                NULL                  6
武昌分校                                               1826.00               499.30                1002.20               65.00                 33
武昌分校                                               1826.00               499.30                1002.20               65.00                 NULL
武昌分校                                               1826.00               499.30                1002.20               65.00                 7
武昌分校                                               1826.00               499.30                1002.20               65.00                 25
长江大学                                               NULL                  NULL                  NULL                  NULL                  NULL
仙桃校区                                               713.00                220.00                NULL                  1489.60               NULL
仙桃校区                                               713.00                220.00                NULL                  1489.60               10

(15 行受影响)
的确有一对多的关系,请问该怎么处理呢?
Ginnnnnnnn 2016-02-13
  • 打赏
  • 举报
回复
那就会不会是NetWork 和 NetworkConsult 存在1对多的关系,你排查的时候可以先把数据查出来不汇总,看下是否这样的情况

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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