sql server:如何按员工返回最新的销售数据

sql server:如何按员工返回最新的销售数据,sql,sql-server,Sql,Sql Server,这里没有。我有点累了 我有一个销售人员的数据列表,如下所示 Employee Name| Sales Timestamp | Item Sold --------------------- Jackie Chan | 07/11/2014 | TV Jessica Alba | 08/01/2014 | Sofa Jessica Alba | 07/25/2014 | Stereo System Will Ferrell

这里没有。我有点累了

我有一个销售人员的数据列表,如下所示

Employee Name|  Sales Timestamp  | Item Sold
             ---------------------
Jackie  Chan |  07/11/2014       | TV
Jessica Alba |  08/01/2014       | Sofa
Jessica Alba |  07/25/2014       | Stereo System
Will Ferrell |  06/30/2014       | Sofa
Will Ferrell |  07/15/2014       | TV
我想返回员工,他们出售物品的最新日期,以及物品的售出日期

我试过了

 Select [Employee Name], MAX[Sales Timestamp], [ITEM SOLD]
FROM Sales
GROUP BY [Employee Name], [ITEM SOLD]
但这给了我每个员工任何商品的最新销售额,而我只想要他们销售的最新商品

请帮忙

;WITH SalesCTE AS
(
    SELECT [Employee Name],
           [Sales Timestamp],
           [ITEM SOLD],
           ROW_NUMBER() OVER (PARTITION BY [Employee Name] ORDER BY [Sales Timestamp] DESC) AS rn
    FROM   Sales
)
SELECT [Employee Name],
       [Sales Timestamp],
       [ITEM SOLD]
FROM   SalesCTE
WHERE  rn = 1

我喜欢这个函数的解析函数:

WITH RankByDate AS (
  SELECT
    EmployeeName,
    SalesTimestamp,
    ItemSold,
    ROW_NUMBER() OVER (
      PARTITION BY EmployeeName
      ORDER BY Salestimestamp DESC
    ) AS TRank
  FROM Sales
)
SELECT * FROM RankByDate

如果销售人员在最新日期销售了多个商品,则此查询与其他查询的不同之处在于它只显示其中一个商品。从样本数据中不清楚这种情况下会发生什么。如果要显示最新日期售出的所有商品,请将
行号()
替换为
RANK()
densite\u RANK()

您的表中是否有所有商品?你有身份证吗?您可以使用Where语句进行筛选,并按销售时间戳排序,然后获取第一条记录,但我不知道您的timespamp列有多可靠。时间戳是可靠的,只是没有输入小时、分钟和秒。你没有任何信息可以给你该员工的最新销售信息。只是没有储存。正如我所说的,你们可以按日期订购并获得第一件商品,这将给你们在最近的一天所做的销售之一。
WITH RankByDate AS (
  SELECT
    EmployeeName,
    SalesTimestamp,
    ItemSold,
    ROW_NUMBER() OVER (
      PARTITION BY EmployeeName
      ORDER BY Salestimestamp DESC
    ) AS TRank
  FROM Sales
)
SELECT * FROM RankByDate