首页 新闻 会员 周边

sql server查询所有客户每个月的销售总额

0
悬赏园豆:30 [已解决问题] 解决于 2018-04-20 09:01
cName dt Amount
福联猛龙 2018/3/7 800
厦门华 2018/3/22 1500
福联猛龙 2018/4/9 2000
厦门华 2018/4/14 252
鑫久盛 2018/4/16 8000
福联猛龙 2018/4/18 1500

最终结果为

  客户          1月     2月    3月    4月 ……

福联猛龙      0       0      0      4300 ……

厦门华         0       0      1500  252 ……

鑫久盛         0        0      0      8000

最好是可行的sql语句能够查询的那种

问题补充:

小白刚接触数据库没多久,大佬们多多帮忙啊

大神带带我吧的主页 大神带带我吧 | 初学一级 | 园豆:25
提问于:2018-04-18 14:07
< >
分享
最佳答案
1

一楼大神正解。。。。

select * from
(select cName,yf=datepart(mm,dt),je=sum(amount) from temp GROUP BY cName,datepart(mm,dt)) as #tt
PIVOT(SUM(je) FOR yf IN([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])) AS PVT

收获园豆:30
华临天下 | 小虾三级 |园豆:1501 | 2018-04-18 16:01
其他回答(2)
1

兄弟,信我一句话,SQL已经是编程里面最简单的语言了。买本《SQL Server 从入门到精通》就会了。

顺便回答你一下

1、sum group by 

2、PIVOT 

只需要懂这两个,你这个问题就解决了。

爱编程的大叔 | 园豆:30839 (高人七级) | 2018-04-18 14:17
0

就是分组和日期格式的使用,select cName,sum(Amount) from table group by name,date_format(dt,%Y%m)

这样就拿到数据了,具体展现的形式随便调了

小光 | 园豆:1766 (小虾三级) | 2018-04-18 15:00

date_format在SQLserver中好像没有这个函数啊

支持(0) 反对(0) 大神带带我吧 | 园豆:25 (初学一级) | 2018-04-18 15:12

@大神带带我吧: 嗯,那个是mysql中的,sqlserver就是换个函数,逻辑不变,用Convert()或者DateName()就行了

支持(0) 反对(0) 小光 | 园豆:1766 (小虾三级) | 2018-04-18 17:20

@大神带带我吧: 要抽时间学习一下sqlserver的语法,网上有免费的pdf,或者百度一下看看资料,这个东西是很重要的

支持(0) 反对(0) 小光 | 园豆:1766 (小虾三级) | 2018-04-18 17:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册