我有如下因素的數據表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