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