1

我需要一些帮助来分组思考。我有两个有效的查询。他们给了我SET1和SET2。现在,对于 SET1 中的每一行,我需要应用与 SET2 不同的日期来获得最终结果 SET3。

SET1 我们公司为经常错过约会的客户提供服务。我有一个复杂的查询,导致一组客户在过去六个月内错过了约会('No_Show'),这个查询计算了集合中每个客户的 No_Show 数量。

SELECT client_id, COUNT(events.id) AS 'No_Show' 
FROM events
WHERE client_id IN 
(/*Complex SELECT statement here that works great*/) 
GROUP BY client_id

SET2 现在,我需要加大赌注,并显示自上次与客户的主要临床医生预约后发生了多少次这些 No_Show 事件。

SELECT MAX(e_date)
FROM events e INNER JOIN client c ON e_client_id = client_id
WHERE e.event_staff_id = c.id_of_primary_clinician

总而言之,我想为查询一中的每一行运行查询二。

SET3 最后,我需要显示自最大日期以来的 No_Shows 数量。因此,对于 SET1 中的每一行,我需要从 SET2 中获取日期并计算 No_Shows 的数量以获得 SET3。感谢您的帮助!

4

1 回答 1

0

使用相关子查询,例如:

SELECT OE.client_id, COUNT(OE.id) AS 'Recent_No_Show' 
  FROM events as OE
  WHERE OE.client_id IN 
    (/*Complex SELECT statement here that works great*/) and OE.e_date >
    ( SELECT MAX(e_date)
      FROM events e INNER JOIN client c ON e.client_id = c.client_id
      WHERE e.event_staff_id = c.id_of_primary_clinician and e.client_id = oe.client_id )
  GROUP BY OE.client_id

我假设你有一个小错字e_client_id

于 2013-10-07T22:12:16.983 回答