sql server

yhived7q  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(372)

我正在使用sql server management studio 2012并运行以下查询:

SELECT T1.ID, COUNT(DISTINCT T2.APPOINTMENT_DATE) AS [TOTAL_APPOINTMENTS]
FROM T1
LEFT JOIN T2
ON T1.ID = T2.ID
WHERE T2.APPOINTMENT_DATE > '2019-01-01' AND T2.APPOINTMENT_DATE < '2020-01-01'
AND (T1.ID = 1 OR T1.ID = 2 OR T1.ID = 3)

我想知道目前这3个人的预约总数。然后,我将把每个人都包括在表1中。表1给出了id(每个人一行),表2给出了每个人在不同日期的所有约会。
我得到的结果是:

ID  TOTAL_APPOINTMENTS
1         12
2         3

但我想:

ID  TOTAL_APPOINTMENTS
1         12
2         3
3         0

你能给个建议吗?

jhdbpxl9

jhdbpxl91#

移动 WHERE 第二个表中的条件 ON 条款:

SELECT T1.ID, COUNT(DISTINCT T2.APPOINTMENT_DATE) AS [TOTAL_APPOINTMENTS]
FROM T1 LEFT JOIN
     T2
     ON T1.ID = T2.ID AND
        T2.APPOINTMENT_DATE > '2019-01-01' AND
        T2.APPOINTMENT_DATE < '2020-01-01'
WHERE T1.ID IN (1, 2, 3);

请注意,第一个表中的条件保留在 WHERE 条款。也, IN 比一堆 OR 条件。

相关问题