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语句能够查询的那种
小白刚接触数据库没多久,大佬们多多帮忙啊
一楼大神正解。。。。
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
兄弟,信我一句话,SQL已经是编程里面最简单的语言了。买本《SQL Server 从入门到精通》就会了。
顺便回答你一下
1、sum group by
2、PIVOT
只需要懂这两个,你这个问题就解决了。
就是分组和日期格式的使用,select cName,sum(Amount) from table group by name,date_format(dt,%Y%m)
这样就拿到数据了,具体展现的形式随便调了
date_format在SQLserver中好像没有这个函数啊
@大神带带我吧: 嗯,那个是mysql中的,sqlserver就是换个函数,逻辑不变,用Convert()或者DateName()就行了
@大神带带我吧: 要抽时间学习一下sqlserver的语法,网上有免费的pdf,或者百度一下看看资料,这个东西是很重要的