2013-10-07 92 views
1

我需要一些幫助思維集。我有兩個查詢工作。他們給我SET1和SET2。現在,對於SET1中的每一行,我需要應用來自SET2的不同日期以獲得最終結果SET3。思考集#2

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。感謝您的幫助!

+2

我認爲那將是更容易,如果你已經添加了一些樣本數據,並以表格的形式 –

+0

CLIENT_ID您的預期產出,COUNT(No_Shows) 123ABC,7 456xyz,11 789opq,4 – PowderSnorkel

+0

是一方或雙方的這些表涉及計算SET1? [事件],[客戶]如果對兩者都是,那麼可以一起完成,如果只有一個已經被使用,那麼仍然有合理的機會可以一起完成。我希望看到「這裏的SELECT語句很棒」。 –

回答

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小錯字。

+0

我現在就試試,謝謝。 – PowderSnorkel