sql - 如何选择具有多个条件的值
问题描述
tbl_A 有 4 列 OrgID、EmpID、Time、Status,tbl_B 有 2 列 OrgID、Threshold。健康)状况:
- 如果阈值时间(来自 tbl_A)大于应该打印 OrgID 的当前时间。
一个 OrgID 可能有多个 EmpID,因此如果第一个 EmpID(在同一 OrgID 下)验证时间大于当前时间,则我们必须一一检查验证,然后无需检查第二个 EmpID,只需直接打印 OrgID。
tbl_状态:
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 进行了验证,它验证了条件并且它有效。
解决方案
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
推荐阅读
- php - 使用数据表时如何在单个单元格中显示多个按钮?
- android - RxJava 和网络调用给出“打开文件过多错误”
- python - '_NestedList' 类型的 python 和 livejson 对象不是 JSON 可序列化的
- php - 选择类型文本时,来自查询的输入类型数值不起作用(几乎)可以
- swift - 容器视图中的 CNContactPickerController
- swift - 符合协议 - 一次又一次地添加协议存根并不能修复错误
- google-apps-script - 如何从脚本内部与电子表格内部运行索引函数
- google-photos - Google Photos API:自动备份照片
- android - 无法启动服务 Intent,U=0:未找到(从应用程序引用库服务)
- gcc - 我有哪些可用的 March/mtune 选项?