我有一個表格和資料,如下所示:
員工:
Id DepartmentId
1 100
2 100
3 100
請假請求:
Id SentFromEmployeeId SentToEmployeeId
1 1 2
2 1 2
3 2 3
離開更新日志:
Id RequestedDate LeaveRequestId Status
1 2021-11-01 11:55:56 1 Pending
2 2021-11-02 10:55:56 1 Accepted
3 2021-11-03 11:55:56 1 Accepted
4 2021-11-04 09:55:56 1 Declined
5 2021-11-05 10:55:56 1 Closed
6 2021-11-06 05:55:56 2 Pending
7 2021-11-07 05:55:56 2 Accepted
8 2021-11-08 02:55:56 2 Accepted
9 2021-11-09 05:55:56 2 Declined
10 2021-11-10 05:55:56 2 Closed
現在我想計算特定部門的統計資料如下:
請求總數sent和received為DepartmentId 100。
但是我在這里為獲取“ Sent”和“ Received”的資料感到困惑,如下所示:
select SentFromEmployeeId,SentToEmployeeId,* from LeaveUpdateLogs l
inner join LeaveRequest lr on l.LeaveRequestId = lr.Id
inner join Employee e1 on e1.Id = lr.SentFromEmployeeId
inner join Employee e2 on e2.Id = lr.SentToEmployeeId
where (l.RequestedDate >= '2021-11-01' and l.RequestedDate < '2021-11-16')
and (e1.DepartmentId =100 or e2.DepartmentId = 100)
但這不會回傳任何資料,盡管我在這兩個日期之間有“25”條記錄。當我注釋掉這 3 行時:
inner join Employee e1 on e1.Id = lr.SentFromEmployeeId
inner join Employee e2 on e2.Id = lr.SentToEmployeeId
(e1.DepartmentId =100 or e2.DepartmentId = 100)
然后查詢作業正常,但我想獲取特定部門的資料。
有人可以幫我解決這個邏輯嗎?
uj5u.com熱心網友回復:
由于我認為您只是在詢問如何加入多個值,因此您可以通過幾種方法解決此問題。
inner join Employee e1 on e1.Id in (lr.SentFromEmployeeId, lr.SentToEmployeeId)
或者
inner join Employee e1 on e1.Id = lr.SentFromEmployeeId
OR e1.Id = lr.SentToEmployeeId
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/361944.html
標籤:sql sql-server 查询语句
