我在从Nothwind数据库中整理出来时遇到了一些问题。 我的任务是创建一个查询,它将为我提供每个月的员工及其销售额列表,例如:
EmployeeID SalesCount OrdersDate
到目前为止,我的代码看起来像这样:
SELECT e.EmployeeID, COUNT(*) AS SalesCount,
cast(year(OrderDate) as varchar) + '.' +
cast(month(OrderDate) as varchar) as OrdersDate
FROM Employees e
LEFT OUTER JOIN Orders o ON o.EmployeeID=e.EmployeeID
GROUP BY e.EmployeeID, YEAR(OrderDate), MONTH(OrderDate)
ORDER BY e.EmployeeID, SalesCount DESC, OrdersDate DESC;
但它给我错误排序的结果。我需要的是一份EmployeesID列表,其中每个人在特定月份的销售数量。
23 10.1997
15 10.1997
- 醇>
10 10.1997
我应该改变什么来获得我需要的结果?
结果不正确
1 11 1998.3
1 9 1996.12
1 9 1998.1
1 9 1998.2
1 8 1997.9
1 8 1998.4
我需要什么
1 11 1998.3
2 10 1998.3
7 9 1998.3
4 8 1998.3
答案 0 :(得分:0)
问题出在您的SELECT
声明中。我认为应该是:
SELECT e.EmployeeID, COUNT(*) AS SalesCount,
year(OrderDate) AS [Sales year],
month(OrderDate) AS [Sales month]
并将订单更改为:
ORDER BY e.EmployeeID, SalesCount DESC
虽然没有一些样本数据和样本输出很难显示
答案 1 :(得分:0)
比我想象的要简单。而且我已经了解到条件的顺序很重要。
我有什么:
displayName()
我需要写的内容:
GROUP BY e.EmployeeID, YEAR(OrderDate), MONTH(OrderDate)
ORDER BY e.EmployeeID, SalesCount DESC, OrdersDate DESC;
现在它告诉我这个:
GROUP BY e.EmployeeID, YEAR(OrderDate), MONTH(OrderDate)
ORDER BY OrdersDate DESC, SalesCount DESC, e.EmployeeID;
感谢您的帮助,您帮助我找到了错误!