按年/月降序排列销售额,salescount desc

时间:2018-04-23 11:33:26

标签: sql sql-server

我在从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列表,其中每个人在特定月份的销售数量。

  
      
  1. 23 10.1997

  2.   
  3. 15 10.1997

  4.   
  5. 10 10.1997

  6.   

我应该改变什么来获得我需要的结果?

结果不正确

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

2 个答案:

答案 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;

感谢您的帮助,您帮助我找到了错误!