2017-05-19 74 views
-1

我需要讓我的查詢返回僅基於員工開始日期的最新記錄。我想我需要一個最大日期內連接,但我無法讓它工作。有人對我有任何建議嗎?我正在使用TOAD for SQL Developer。如何僅返回基於日期的最近記錄

SELECT 
    e.No_, 
    ep.[Classification Description], 
    ep.[Employee Starting Date], 
    ep.[Standard Rate], 
    ep.[Over Award Rate], 
    ep.[Employee Rate], 
    p.[Job Title], 
    e.[First Name], 
    e.[Last Name], 
    e.[Payroll No_] 
FROM Employee e, 
    [Payroll Employee] p, 
    [Employee Pay Rate] ep 
WHERE e.No_ = p.[Employee No_] 
AND e.No_ = ep.[Employee No_] 
AND ep.[Employee No_] = p.[Employee No_] 
AND e.[Payroll No_] = 'PAY7' 
AND CAST(e.[Termination Date] AS date) = '1753-01-01' 
+1

你希望每一個員工最近的記錄或者你只是想最近的記錄?哪一天? '員工開始日期'? –

+1

添加模式示例數據和所需的輸出 –

+0

附加問題..這是真的嗎? ''1753-01-01'' –

回答

0

您可以通過做羣組,並獲得最小或最大日期如下:

SELECT 
    e.No_, 
    ep.[Classification Description], 
    MAX(ep.[Employee Starting Date]) as [Employee Starting Date], --hope it is min based on your logic 
    ep.[Standard Rate], 
    ep.[Over Award Rate], 
    ep.[Employee Rate], 
    p.[Job Title], 
    e.[First Name], 
    e.[Last Name], 
    e.[Payroll No_] 
FROM Employee e 
    INNER JOIN [Payroll Employee] p 
    ON e.No_ = p.[Employee No_] 
    INNER JOIN [Employee Pay Rate] ep 
    ON e.No_ = ep.[Employee No_] 
    AND ep.[Employee No_] = p.[Employee No_] 
WHERE 
    e.[Payroll No_] = 'PAY7' 
AND CAST(e.[Termination Date] AS date) = '1753-01-01' 
GROUP BY 
    e.No_, 
    ep.[Classification Description], 
    ep.[Standard Rate], 
    ep.[Over Award Rate], 
    ep.[Employee Rate], 
    p.[Job Title], 
    e.[First Name], 
    e.[Last Name], 
    e.[Payroll No_] 
相關問題