我已經在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