5

这是我的餐桌订单

在此处输入图像描述

如果我想知道每个确切年份的订单数,我只需编写这个查询

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

所以有这个结果集

在此处输入图像描述

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

CoundOfOrder       FromYear_toYear
     5            2005-2010
     4            2010-2015
4

2 回答 2

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使用您的示例来形成此查询。

于 2013-06-28T10:15:38.813 回答
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

请注意,我调整了您的日期范围,否则您将无法获得有意义的数据,将某些内容分为 2 个类别。

于 2013-06-28T09:36:33.610 回答