【发布时间】:2018-01-04 09:37:07
【问题描述】:
我正在准备一份包含以下表格(培训和资源)的 SQL 报告:
Trainings
- Id
- Name
- StartDate
- EndDate
还有
Resource
- Id
- FullName
- JoinedOn
- TerminatedOn
我需要的是在培训期间获得资源。例如,我将传递培训 start 和 end 日期,并根据这些日期提取最近的资源:
Training Start Date: 01-08-2017
Training End Date: 04-08-2017
资源
Emp1 (01-05-2016 and 30-09-2017)
Emp2 (01-03-2016 and 30-04-2017)
Emp3 (01-02-2016 and 30-09-2017)
Emp4 (01-08-2017 and 30-04-2018) -- This is the Closest match
Emp5 (01-09-2016 and 30-01-2017)
Emp6 (01-11-2016 and 30-02-2017)
尽管其他日期范围也包含这些日期,但 01-08-2016 和 30-04-2017 是最接近的日期。
请帮助我实现这一目标。我尝试了以下方法:
SELECT TOP 1 R.FullName
FROM [Resource] R
WHERE (
(YEAR('01-08-2017') = YEAR(JoinedOn) AND Month('01-08-2017') = Month(JoinedOn) )
OR
(YEAR('04-08-2017') = YEAR(TerminatedOn) AND Month('04-08-2017') = Month(TerminatedOn))
)
ORDER BY TerminatedOn DESC
【问题讨论】:
标签: sql sql-server date sql-order-by