sql server

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

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

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

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

  1. ID TOTAL_APPOINTMENTS
  2. 1 12
  3. 2 3

但我想:

  1. ID TOTAL_APPOINTMENTS
  2. 1 12
  3. 2 3
  4. 3 0

你能给个建议吗?

jhdbpxl9

jhdbpxl91#

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

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

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

相关问题