集#2中的思考

时间:2013-10-07 22:00:25

标签: sql tsql set

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

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

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。谢谢你的帮助!

1 个答案:

答案 0 :(得分: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的小错字。