牛骨文教育服务平台(让学习变的简单)
博文笔记

SQL按月汇总

创建时间:2009-06-14 投稿人: 浏览次数:2197

方式一:

select  convert(char(7),createtime,20) as time,sum(clickhits) as hits from TEST0123 

group by convert(char(7),createtime,20) 

方式二:

把任意时间段的数据按年、月、日、小时、分种任意格式来汇总,搞了半天终于写出来了,奉献给新手们看看还行吗

SELECT CONVERT(CHAR(10),[OrderTime],120)[time],USD,EUR,GBP,CAD,AUD,HKD
INTO #F
FROM Paypal
WHERE DATEDIFF(DAY,OrderTime,@date)=0 AND PaypalState="Completed"


这个查询是用来把指定那天的所有记录查询到临时表#F中,最关键就是SELECT语句里面的Convert函数,你把CHAR的值设多长,比如说你想基于YYYY-MM月查询
就应该写成CHAR(7),为什么呢?因为当你把Datetime转化成字符串的过程中,CHAR(7)把后面多余的字符截取掉了,得到了你想要的日期格式。这样再GROUP BY
这个新生成的列,就是按月的汇总,按此推理YYYY-MM-DD就是CHAR(10),YYYY-MM-DD HH就是CHAR(13),YYYY-MM-DD HH:mi就是CHAR(16)

SELECT [time],"USD"=SUM(USD)*@USD,"EUR"=SUM(EUR)*@EUR,"GBP"=SUM(GBP)*@GBP,"CAD"=SUM(CAD)*@CAD,"AUD"=SUM(AUD)*@AUD,SUM(HKD)*@HKD[HKD],"Quantity"=Count(*),
(SUM(USD)*@USD+SUM(EUR)*@EUR+SUM(GBP)*@GBP+SUM(CAD)*@CD+SUM(AUD)*@AUD+SUM(HKD)*@HKD)[CNY]
FROM #F
GROUP BY [time]

DROP TABLE #F

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。