【发布时间】:2016-01-07 15:30:33
【问题描述】:
我有三个表Employee、Loan 和LoanInstallment。
Employee 表与Loan 具有一对多关系,而Loan 具有一对多关系
许多与LoanInstallment。
-
Employee(EmpId、姓名、IsOnProbation) -
Loan(LoanId、EmpId、StartDate、EndDate)。
现在我需要编写一个查询来获取以下输出中的员工记录。
输出记录(EmpId、名称、状态、原因)
规则
如果员工从未贷款,则其状态应为合格,并且理由为未贷款。
如果员工在一年内贷款(即 EndDate 不到一年),则其状态应为不合格并说明已贷款。
如果员工处于试用期,则状态应为不合格且试用期原因
如果员工在 1 年前使用了 laon,则状态应为 Eligible 并且 Reason Loan 在 1 年前使用。
我编写了一个简单的查询,但我无法理解如何在这个单一查询中包含所有四个规则并包含原因列。
SELECT
e.EmployeeID, E.FullName,l.EndDate,
(CASE
WHEN DATEDIFF(YEAR, max(l.EndDate), GETDATE()) < 0
THEN 'Eligible'
ELSE 'Not Eligible'
END) as Status
FROM
Employee e
LEFT JOIN
Loan l ON e.EmployeeID = l.EmployeeID
GROUP BY
e.EmployeeID, e.FullName, l.EndDate
【问题讨论】:
标签: sql sql-server