我已经在SQL Server中下面的查询显示多个最大列:如何从最大ID
select
Max(STO.LeaveID) as LeaveID,
LR.EmployeeName,
STO.DateOff,
STO.TimeBegin,
STO.TimeEnd,
STO.PayPeriodEnd,
STO.TodayHoursOff,
STO.LeaveCode
from
dbo.tblSeperateTimeOff STO
inner join
dbo.tblLeaveRequest LR on STO.LeaveID=LR.ID
inner join
dbo.tblLeaveApproval LA on STO.LeaveID = LA.LeaveID
where
LA.ApprovalDepartment like'%Finance%'
and EmployeeName like '%polland%'
and LA.IsApprove=1
and LA.IsFinalApprove=1
group by
LR.EmployeeName,
STO.DateOff,
STO.TimeBegin,
STO.TimeEnd,
STO.PayPeriodEnd,
STO.TodayHoursOff,
STO.LeaveCode
order by
EmployeeName
结果显示:
LeaveID EmployeeName DateOff TimeBegin TimeEnd PayPeriod Hours LeaveCode
88 Polland, Sean 2014-09-08 08:30AM 11:00AM 2014-09-13 2.5 P (Personal Leave Scheduled*)
112 Polland, Sean 2014-09-24 2014-09-27 8 P (Personal Leave Scheduled*)
121 Polland, Sean 2014-09-25 2014-09-27 8 P (Personal Leave Scheduled*)
121 Polland, Sean 2014-09-26 2014-09-27 8 P (Personal Leave Scheduled*)
我想获得与摆脱行LeaveID 112并保留88和两个121的LeaveID。原因是我希望它只有最大的Leave ID具有相同的PayPeriod。我将如何格式化查询以实现此目的?谢谢。
如果你知道你想消灭你能不能只是添加一个附加条件和'LEAVEID NOT IN(112)许可ID' – MethodMan 2014-09-19 18:01:11
你真应该看看正常化您的数据。您将EmployeeName作为格式化值存储在每一行中。您还要存储LeaveCode的文本。这两个应该是另一个表的外键。与ApprovalDepartment一样。 – 2014-09-19 18:02:42
DJ Kraze:我正在使用这个例子,所以我在这种情况下声明了EmployeeName。实际上,对于ApprovalDepartment,IsApprove和IsFinalApprove,只有where子句将有100行。另一位员工可以在相同的付款期限内请求日期,但是LeaveID与这种情况类似。我只是不希望在这个例子中使用LeaveID 112,而不必像上面提到的那样使用静态条件。 – JonL 2014-09-19 18:08:35