Sql分组在一年的范围内

时间:2013-06-28 09:23:01

标签: sql-server tsql

这是我的表订单

enter image description here

如果我想在每个确切的年份中获得订单数量,我只需编写此查询

Select COUNT(*) CountOfOrders, Year(OrderDate) Year  
From Orders 
Group by YEAR(OrderDate)

所以有这个结果集

enter image description here

但是,如果我需要这个结果集,该怎么办?

CoundOfOrder       FromYear_toYear
     5            2005-2010
     4            2010-2015

2 个答案:

答案 0 :(得分:6)

您可以尝试此查询。这将以最简单的方式帮助您。

SELECT  COUNT(*),(CONVERT(VARCHAR,MIN(year(orderdate)))+'-' + CONVERT(VARCHAR,MAX(year(orderdate)))) AS yearRange
FROM orders
GROUP BY FLOOR(Year(OrderDate) /5)

您可以参考使用您的示例的链接SQL_Fiddle_Link来形成此查询。

答案 1 :(得分:3)

Select COUNT(*) CountOfOrders, 
CASE WHEN Year(OrderDate) BETWEEN 2005 AND 2009 THEN '2005-2009'
     WHEN Year(OrderDate) BETWEEN 2010 AND 2015 THEN '2010-2015'
END AS Year  
From Orders 
Group by 
CASE WHEN Year(OrderDate) BETWEEN 2005 AND 2009 THEN '2005-2009'
     WHEN Year(OrderDate) BETWEEN 2010 AND 2015 THEN '2010-2015'
END

请注意,我调整了您的日期范围,或者您无法获得有意义的数据,只计算两个类别中的某些内容。