tbl_A 有 4 列 OrgID、EmpID、Time、Status,tbl_B 有 2 列 OrgID、Threshold。 条件:
一个 OrgID 可能有多个 EmpID,因此如果第一个 EmpID(在同一 OrgID 下)验证时间大于当前时间,则我们必须一一检查验证,然后无需检查第二个 EmpID,只需直接打印 OrgID。< /p>
tbl_status:
OrgID EmpID Time Status
100 1 2021-05-18 00:00:00.000 A
100 2 2021-05-18 00:00:00.000 B
100 3 2021-05-18 00:00:00.000 A
200 1 2021-05-18 00:00:00.000 A
200 2 2021-05-18 00:00:00.000 A
tbl_hold:
OrgID Threshold
100 0
200 10
如果阈值为 0 则不验证任何条件,只打印 OrgID,但如果有阈值,则应首先检查第一个 EmpID,如果符合条件,则无需检查其余 EmpID 的条件。
输出:
OrgID
100
200
因为对于 OrgID 100,我首先检查阈值为 0,所以不需要任何条件,它会被打印出来。 但是 OrgID 200 有阈值,所以我检查了它有 2 个 EmpID。所以首先我对 200 个 OrgID 的第一个 EmpID 进行了验证,它验证了条件并且它起作用了。
答案 0 :(得分:1)
SELECT DISTINCT a.OrgID
FROM tbl_A a
INNER JOIN tbl_B b
ON a.OrgID = b.OrgID
WHERE b.Threshold = 0
OR DATEDIFF(minute, GETDATE(), a.Time) > b.Threshold