我有如下因素的数据表EMPDEPT:SQL查询来获取部门与开始日期和结束日期
EmployeeID Dept StartDate EndDate
JON001 PP 15-JUN-2013 13-AUG-2013
JON001 AA 14-AUG-2013 NULL
而且我有顺序表
OrderID TransactionDate EmployeeID
2323 2-JUN-2012 JON001
2324 23-JUN-2013 JON001
2325 2-AUG-2014 JON001
而且我想加入这两个表得到以下
OrderID TransactionDate EmployeeID DEPT
2323 2-JUN-2012 JON001 PP
2324 23-JUN-2013 JON001 PP
2325 2-AUG-2014 JON001 AA
通知orderid 2323交易日期小于最小开始日期 和JON001的当前部门没有结束日期。 基本上,如果交易日期小于最小值startdate,那么min startdate应该是开放的。
如何做到以上?
这是我到目前为止,但由于交易日期不在startdate和enddate之间,因此我为OrderID 2323取NULL。
SELECT OT.OrderID
,OT.TransactionDate
,OT.EmployeeID
, (
SELECT TOP 1 Dept FROM EmpDept ED WHERE ED.EmployeeID=OT.employeeID
AND OT.trans_date BETWEEN ED.StartDate AND
CASE
WHEN isnull(ED.EndDate,0)=0 THEN dateadd(year,50,ED.StartDate)
END
) "Dept"
FROM OrderTable OT
您的查询有什么问题? – 2014-09-22 23:28:20
由于事务日期不在startdate和enddate之间,因此我得到OrderID为2323的NULL Dept。 – BobNoobGuy 2014-09-22 23:29:49
你期望得到什么?那天没有有效的部门。 – 2014-09-22 23:32:55