SQL,分组查询的问题! ( 积分: 100 )

  • 主题发起人 主题发起人 小虾米爱吃鱼
  • 开始时间 开始时间

小虾米爱吃鱼

Unregistered / Unconfirmed
GUEST, unregistred user!
是这样的,有一个表&nbsp;T_a<br>其中字段:1、A:Money&nbsp;&nbsp;&nbsp;2、B:datetime<br>例如:<br>1、5.00&nbsp;&nbsp;&nbsp;&nbsp;2007-08-02&nbsp;06:00:00<br>2、6.50&nbsp;&nbsp;&nbsp;&nbsp;2007-08-02&nbsp;08:00:00<br>3、8.50&nbsp;&nbsp;&nbsp;&nbsp;2007-08-02&nbsp;11:15:25<br>4、5.00&nbsp;&nbsp;&nbsp;&nbsp;2007-08-02&nbsp;12:10:26<br>5、5.30&nbsp;&nbsp;&nbsp;&nbsp;2007-08-02&nbsp;17:20:28<br>6、3.60&nbsp;&nbsp;&nbsp;&nbsp;2007-08-02&nbsp;18:30:24<br><br>现在想:按照时间段来统计A的值:<br>如:00:00:00--05:00:00&nbsp;&nbsp;--零晨<br>&nbsp;&nbsp;&nbsp;&nbsp;05:00:01--10:00:00&nbsp;&nbsp;--早晨<br>&nbsp;&nbsp;&nbsp;&nbsp;10:00:01--13:00:00&nbsp;&nbsp;--中午<br>&nbsp;&nbsp;&nbsp;&nbsp;13:00:01--16:00:00&nbsp;&nbsp;--下午<br>&nbsp;&nbsp;&nbsp;&nbsp;16:00:01--19:00:00&nbsp;&nbsp;--傍晚<br>&nbsp;&nbsp;&nbsp;&nbsp;19:00:01--23:59:59&nbsp;&nbsp;--夜间<br><br>根据上面的数据,我要查的结果是:<br>零晨:0.00<br>早晨:11.50<br>中午:13.50<br>下午:0.00<br>傍晚:8.90<br>夜间:0.00<br><br>有请各位大虾
 
横着放可以不?如&nbsp;<br>凌晨&nbsp;早晨&nbsp;...<br>0.00&nbsp;11.50...
 
横竖有关系吗?<br>我只要能查出来就可以了,一条语句
 
select&nbsp;'零晨',&nbsp;sum(money)&nbsp;where&nbsp;时间条件1<br>union&nbsp;<br>select&nbsp;'早晨',&nbsp;sum(money)&nbsp;where&nbsp;时间条件2<br>union&nbsp;<br>select&nbsp;'中午',&nbsp;sum(money)&nbsp;where&nbsp;时间条件3<br>union&nbsp;<br>select&nbsp;'下午',&nbsp;sum(money)&nbsp;where&nbsp;时间条件4<br>union&nbsp;<br>select&nbsp;'傍晚',&nbsp;sum(money)&nbsp;where&nbsp;时间条件5<br>union&nbsp;<br>select&nbsp;'夜间',&nbsp;sum(money)&nbsp;where&nbsp;时间条件6
 
用时间转换函数,如convert(char(2),datatime,108)去判断,就可以得出了,这样的问题我也有用过.
 
SELECT&nbsp;sum(money),&nbsp;case&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when&nbsp;ord_date&nbsp;&gt;=&nbsp;'00:00:00'&nbsp;and&nbsp;ord_date&lt;='05:00:00'&nbsp;then&nbsp;'零晨'&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when&nbsp;ord_date&nbsp;&gt;=&nbsp;'05:00:01'&nbsp;and&nbsp;ord_date&lt;=&nbsp;'10:00:00'&nbsp;then&nbsp;'早晨'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;as&nbsp;atime&nbsp;from&nbsp;&nbsp;T_a&nbsp;&nbsp;group&nbsp;by&nbsp;atime<br>时间比较部分改一下就可以
 
查询&nbsp;SUM(MONEY),&nbsp;时间&nbsp;=&nbsp;(case&nbsp;datediff(hour,&nbsp;。。。)&nbsp;when&nbsp;0&nbsp;THEN&nbsp;‘凌晨’。。。end)&nbsp;FROM&nbsp;表&nbsp;group&nbsp;by&nbsp;时间<br><br>//公司不让贴代码出去,麻烦你自己翻译下下,实在不好意思了:(
 
呀,帖子开在这里就睡觉了,没想到中午有这么多人都回答了啊,我的意思其实就是hanpengshan_00发的,只不过我用的是函数
 
hanpengshan_00:<br>你这个行不行啊!你自己试了没啊?
 
select&nbsp;sum(a),(case&nbsp;datepart(hh,b)/5&nbsp;when&nbsp;0&nbsp;then&nbsp;'凌晨'&nbsp;when&nbsp;1&nbsp;then&nbsp;/*&nbsp;自己写完*/end)&nbsp;name&nbsp;from&nbsp;test3&nbsp;group&nbsp;by&nbsp;datepart(hh,b)/5
 
多人接受答案了。
 
后退
顶部