以下是我拥有的数据(请注意,这仅适用于一个实体ID/员工ID,可能会有多个。一个实体ID可以拥有多个员工ID):
SELECT EntityId,
EmployeeId,
PayPeriodStart,
IsFullTime
FROM dbo.Payroll
WHERE EmployeeId = 316691
AND PayPeriodStart <= '12/31/2014'
AND PayPeriodEnd >= '1/1/2014';
我想获取每个EntityID和EmployeeID组合中的最后一个“IsFullTime”值。
我尝试了以下方法:
SELECT EntityId,
EmployeeId,
LAST_VALUE(IsFullTime) OVER (PARTITION BY EntityId, EmployeeId ORDER BY EntityId, EmployeeId, PayPeriodStart) AS LastIsFullTimeValue
FROM dbo.Payroll
WHERE EmployeeId = 316691
AND PayPeriodStart <= '12/31/2014'
AND PayPeriodEnd >= '1/1/2014';
但是我得到了这个:
查询应该只返回每个EntityID / EmployeeID的一行。
我做错了什么?
SELECT @@VERSION
的输出是什么?LAST_VALUE
是 SQL Server 2012 中的新功能,不支持早期版本。 - marc_sGROUP BY
。 - mustaccio