随笔 - 9  文章 - 0 评论 - 37 trackbacks - 0
<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

看见卖逼的漂亮女人了 8-15 17:27

与我联系

搜索

 

常用链接

留言簿(1)

我的标签

随笔档案

文章分类

相册

最新评论

阅读排行榜

评论排行榜

刚一上班就碰到个问题,要我把任意时间段的数据按年、月、日、小时、分种任意格式来汇总,搞了半天终于写出来了,奉献给新手们看看还行吗

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

你看我基于每天的每小时的汇总,就是这样实现的,假如你有更好的办法,赶快给我拍砖啊
Tag标签: SQL,汇总,日期,查询
posted on 2008-04-29 20:38 bidaas 阅读(548) 评论(0)  编辑 收藏

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: