特定日期内的销售产品数量

时间:2014-01-15 17:40:19

标签: sql sql-server sql-server-2008 tsql

我陷入了这个问题。

CustomerId | EmployeeID | OrderDate| 
1              2          2013-01-01  
2              2          2013-01-01
2              2          2013-01-02
3              1          2013-02-14
3              2          2013-01-02
4              2          2013-01-03
5              2          2013-01-04
6              2          2013-01-06  
7              2          2013-01-05 

我不知道该怎么问,但我希望我会尽力而为。

我想了解哪个员工在3天内销售了多少产品 例如:EmployeID 2在

中销售了一些产品
 2013-01-01,2013-01-01 = 1. day (2 sells)
 2013-01-02 = 2.day (2 sell)
 2013-01-03 = 3.day (1 sell)


所以我们可以在3天内看到Employe销售了5款产品。和

 2013-01-04 = 1.day (1 sell)
 2013-01-05 = 2.day (1 sell)
 2013-01-06 = 3.day (1 sell)


员工在另外3天内又卖了3个。所以输出表看起来像

EmployeID | SoldProductIn3Days|
  2            5
  2            3

如何在t-sql中查询?

1 个答案:

答案 0 :(得分:2)

已更改答案以满足评论的要求。

DECLARE @MySales AS TABLE
(
 CustomerID INT
,EmployeeID INT
,OrderDate DATE
);

WITH    Sales
      AS ( SELECT OrderDate
               ,EmployeeID
               ,ROW_NUMBER() OVER ( PARTITION BY employeeid ORDER BY OrderDate ) AS RowNum
            FROM @MySales),
    SalesCalc
      AS ( SELECT OrderDate
               ,EmployeeID
               ,CONVERT(INT, Rownum / 3.01) AS MyGrouping
            FROM Sales)
SELECT EmployeeID, MyGrouping, COUNT(*)
    FROM SalesCalc
    GROUP BY EmployeeID, MyGrouping

我已经使用表变量来模拟你的表,但只需取出我的表变量并将表放在那里。这应该可以解决问题。当我将RowNumber除以3.1时,它会在前3天生成0,0,0而不是接下来3天生成1,1,1依此类推,最后所有内容都是分组并计算在内。

相关问题