Sql 选择用于预订约会的可用时间段的ID
我有一张名为“预约”的表格,上面显示了预约的时间段Sql 选择用于预订约会的可用时间段的ID,sql,timeslots,Sql,Timeslots,我有一张名为“预约”的表格,上面显示了预约的时间段 id | time start | time end | caseno 1 | 800 | 830 | null 2 | 800 | 830 | null 3 | 900 | 930 | AB-111 4 | 900 | 930 | null 我需要显示CaseNo为空的可用约会时段。但是,每次都有两个可用的时隙(8am、830am、900
id | time start | time end | caseno
1 | 800 | 830 | null
2 | 800 | 830 | null
3 | 900 | 930 | AB-111
4 | 900 | 930 | null
我需要显示CaseNo
为空的可用约会时段。但是,每次都有两个可用的时隙(8am、830am、900am等)
我应该使用什么查询来显示列:
Apn\u Id
、Apn\u TimeStart
和Apn\u TimeEnd
避免显示重复项,只使用可用的时隙(caseno=null
)?您可以这样做:
SELECT MIN(id) as id,time_start,time_end
FROM Appointments
GROUP BY time_start,time_end
HAVING SUM(CASE WHEN caseno IS NOT NULL THEN 1 ELSE 0 END) = 0
说明:
have
子句仅用于占用可用的时隙(case=null
)
MIN
用于分组依据
(以避免重复)
结果:
id time_start time_end
------------------------
1 800 830
示例结果。如果要查找
NULL
的约会,可以使用HAVING
子句。如果希望所有插槽都为NULL
,请使用:
HAVING COUNT(caseno) = 0
HAVING COUNT(caseno) < COUNT(*)
如果希望任何插槽为“NULL”,请使用:
HAVING COUNT(caseno) = 0
HAVING COUNT(caseno) < COUNT(*)
有计数(caseno)
请记住:
COUNT()?预期的结果是什么?您可以向我们展示您当前的查询吗?对于您问题中的数据示例,您正在寻找的预期结果是什么?查询是否包含开始时间和结束时间?请证明您已经尝试了一些方法。