2014-02-20 85 views
1

我想按星期和月份分组数据。说我想找到(所有周日在二月体积之和)(体积为Januray所有周日总和)+ + ......我是什么样的按星期和月份分组

select CONVERT(VARCHAR(10),date,111), 
     DATENAME(weekday,date) as Weekday, 
     DATEPART(month,date) as Month, 
     DATEPART(year,date) as year, 
     sum(volume) 
    from traffic_data_replica 
group by CONVERT(VARCHAR(10),date,111), 
     DATENAME(weekday,date), 
     DATEPART(month,date), 
     DATEPART(year,date) 
order by DATEPART(year,date), 
     CONVERT(VARCHAR(10),date,111), 
     DATEPART(month,date), 
     DATENAME(weekday,date) ; 

但是,这不是想要的结果,我想:(

回答

3

要包括的组通过(该CONVERT(VARCHAR(10),date,111))在实际的日期,这样的日子是聚集程度尝试是这样的:

SELECT Year(date), 
     Month(date), 
     Datename(weekday, date) AS Weekday, 
     Sum(volume) 
FROM traffic_data_replica 
GROUP BY Year(date), 
      Month(date), 
      Datename(weekday, date) 
ORDER BY Year(date), 
      Month(date), 
      Datename(weekday, date); 

可以使用datepart()代替year()month()。我只是发现后者更容易阅读和打字。

+0

没有我需要的是Januray月中所有星期日的总和......然后在2月份的星期天等等...你给出的结果与我得到的结果是一样的...... – bibinmatthew

+0

@bibinmatthew。 。 。这个查询应该每个工作日每月返回一行,以及这些卷的总和。您的查询每天返回一行,并将当天的数量相加。查询不应该返回相同的东西。如果您设置了SQL Fiddle示例,那么我们可以比较两个查询的结果集。 –

+0

很好解释:)感谢bro @gordon – bibinmatthew