我试图按每个月每月获得订单数,我发现有几个相关函数,它们是有帮助的。列在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中
首先是DATEPART(男,订购日期),日期部分(Y,订购日期),所以我写了我的代码如下:
select DATEPART(Q, OrderDate) Q , datepart(YEAR, OrderDate) Y, count(*) count
from Orders
group by DATEPART(Q, OrderDate), datepart(Y, OrderDate);
,但它的主要错误: 列 'Orders.OrderDate' 是无效的选择列表,因为它不包含在聚合函数或GROUP BY子句中。
于是,我试图用月(DateOrder)和Year(DateOrder),代码如下:
select month(OrderDate) M , year(OrderDate) y, count(*) count
from Orders
group by month(OrderDate),year(OrderDate);
上面的代码的结果表明它是成功的。
我的问题是为什么第一个代码有错误,但第二个代码是正确的?谢谢!
可能是混乱,因为'Q'是在SQL Server中的关键字。 –
反正你应该避免使用日期部分速记。 http://sqlblog.com/blogs/aaron_bertrand/archive/2011/09/20/bad-habits-to-kick-using-shorthand-with-date-time-operations.aspx –