我正在做Northwind数据库的练习,并且编写了以下查询:
select
Employees.EmployeeID, year(Orders.OrderDate) as Year,
count(Employees.EmployeeID) as 'Total Orders'
from
Orders
join
Employees on Orders.EmployeeID = Employees.EmployeeID
where
year(Orders.OrderDate) = '1996'
group by
Employees.EmployeeID, Orders.OrderDate
order by
Employees.EmployeeID asc
我得到以下输出:
EmployeeID | Year | Total Orders
-----------+------+--------------
1 |1996 | 1
1 |1996 | 1
1 |1996 | 2
1 |1996 | 1
1 |1996 | 1
....
我认为问题是year(Orders.OrderDate)
的一部分,因为原始日期有月,日,...
任何帮助都将不胜感激!
答案 0 :(得分:1)
尝试:
group by Employees.EmployeeID, year(Orders.OrderDate)
据我所知,您可以按功能分组。
编辑:另外,除非在子查询中首先对其进行评估,否则通常不能将代表函数的别名分组。
答案 1 :(得分:0)
每当使用group by子句时,我们都应使用select子句中没有别名的所有字段,因为它是聚合操作之外的
对于您而言,您的group by子句应为
按Employees.EmployeeID分组,年份(Orders.OrderDate)