【发布时间】:2017-02-10 13:46:56
【问题描述】:
我正在尝试从两个表(例如 Employee 和 Appraisal)创建查询。这两个表都有一对多的关系。考核表根据AppraisalType列有员工加入、重新加入或退出时的员工记录。
select dbo.Employee.EmployeeID
,dbo.Employee.FullName
,dbo.Employee.CostCenterID
,ea.AppraisalDate as fromDate
,
(select case
when exists
(select 1
from
EmployeeAppraisal as EA2
where EA2.EmployeeID = Employee.EmployeeID
and EA2.AppraisalType = 'Exit'
having min(EA2.AppraisalDate) > EA.AppraisalDate
)
then
(select min(AppraisalDate)
from
EmployeeAppraisal as EA2
where EA2.EmployeeID = EA.EmployeeID
and EA2.AppraisalType = 'Exit'
having min(EA2.AppraisalDate) > EA.AppraisalDate
)
else getdate()
end
) as ToDate
,0 as MonthDiff
,dbo.Employee.IsActive
from
dbo.Employee
join EmployeeAppraisal as EA
on Employee.EmployeeID = EA.EmployeeID
where EA.AppraisalType = 'Re-Joining'
and Employee.EmployeeId = 1253;
这给出了以下结果集。它为所有行提供相同的错误 toDate
虽然实际数据是,但请注意重新加入日期应为 fromDate,退出应为 toDate。任何帮助表示赞赏
【问题讨论】:
-
请将源数据添加为
create table ... insert into ...脚本,以便我们实际使用它来帮助您。
标签: sql database sql-server-2008