检查是否缺少数据

时间:2015-12-29 14:39:03

标签: sql

我一直绞尽脑汁想要如何实现以下目标,所以任何帮助都会得到很好的接受。

我有一张为医生诊所开设的会议表。使用的列是 诊所ID,会话ID,会话日期。 示例数据将是

Clinic_ID | Session_ID | Session_Date
    1     |     1      |  20160114
    1     |     2      |  20160121
    1     |     3      |  20160128
    2     |     1      |  20160114
    2     |     2      |  20160128

Clinic_ID链接到Clinic表,其中存储了诊所的主要详细信息。关系是一个诊所可以举行许多会议。

我试图检索的数据适用于在Session_Date上运行20160121会话的任何诊所,但在20160128上没有运行会话。

我真的不知道从哪里开始写这个问题的查询 - 如果我太模糊或缺少信息,请告诉我,我会提供最好的信息可以。

表名是Clinic的Clinic_List和Sessions的Sessions_List。

2 个答案:

答案 0 :(得分:0)

select  distinct Clinic_ID
from    Session_List
where   Session_Date = '20160121'
        and Clinic_ID not in
        (
        select  Clinic_ID
        from    Session_List
        where   Session_Date = '20160128'
        )

答案 1 :(得分:0)

解决此问题的一种方法是使用group byhaving子句:

select clinic_id
from Sessions_List
group by clinic_id
having sum(case when session_date = 20150121 then 1 else 0 end) > 0 and
       sum(case when session_date = 20160128 then 1 else 0 end) = 0;

我喜欢这种方法(使用having子句),因为它对于各种条件都非常灵活。 having子句中的每个表达式都计算给定日期的会话数。 > 0表示会话; = 0表示没有。