当前位置: 代码迷 >> Sql Server >> 依据月、周、天、时查数据(统计查询)
  详细解决方案

依据月、周、天、时查数据(统计查询)

热度:52   发布时间:2016-04-27 12:11:55.0
根据月、周、天、时查数据(统计查询)
数据表是这样的,表中就两个字段  
 id time(时间) count(数量)

 1 2012-3-5 17:30:20 100
 2 2012-3-5 13:30:20 135
 2 2012-4-6 9:30:20 400
 3 2012-5-7 20:30:20 100


问题如下:

1. 根据月份查询总数量(比如,3月份的总数量就是235)
2. 根据月份查询增量(比如:4月份较3月份的增量就是165)


3. 根据每周查询总数量 
4. 根据每周查询增量

总之就是,分别根据月、周、时、天这四个条件查询总数量和增量

我sql不好,想了两天都没把这个想出来,只想出来月份怎么算,周、时、天我还真的不知道怎么用sql写,头大了,望会的大师写下sql



------解决方案--------------------
SQL code
Declare @A Table([ID] Int, [Time] DateTime,[count] int)InSert Into @ASelect 1, '2012-3-5 17:30:20', 100 Union Select 2, '2012-3-5 13:30:20', 135 UnionSelect 2, '2012-4-6 9:30:20', 400 UnionSelect 3, '2012-5-7 20:30:20', 100--1. 根据月份查询总数量(比如,3月份的总数量就是235)Select Month([Time]) 月份, Sum(Count) 总数量 From @A Where Month([Time]) = 3 Group By Month([Time])--2. 根据月份查询增量(比如:4月份较3月份的增量就是165)Select Cast(T1.月份 As Varchar(10))+'月份较'+Cast(T2.月份 As Varchar(10))+'月份', T1.总数量 - T2.总数量From (Select Month([Time]) 月份, Sum(Count) 总数量 From @A Group By Month([Time])) T1,    (Select Month([Time]) 月份, Sum(Count) 总数量 From @A Group By Month([Time])) T2Where T1.月份 = T2.月份 + 1--3. 根据每周查询总数量 Select DateName(ww,[Time]) 周, Sum(Count) 总数量 From @A Where DateName(ww,[Time]) = 14 Group By DateName(ww,[Time])--4. 根据每周查询增量Select Cast(T1.周 As Varchar(10))+'周较'+Cast(T2.周 As Varchar(10))+'周', T1.总数量 - T2.总数量From (Select DateName(ww,[Time]) 周, Sum(Count) 总数量 From @A Group By DateName(ww,[Time])) T1,    (Select DateName(ww,[Time]) 周, Sum(Count) 总数量 From @A Group By DateName(ww,[Time])) T2Where T1.周 < T2.周
  相关解决方案