2013-04-05 79 views
0

採取以下:COUNT評估爲零,如果沒有符合條件的記錄

SELECT 
    Count(a.record_id) AS newrecruits 
    ,a.studyrecord_id 
FROM 
    visits AS a 
INNER JOIN 
(
    SELECT 
     record_id 
     , MAX(modtime) AS latest 
    FROM 
     visits 
    GROUP BY 
     record_id 
) AS b 
ON (a.record_id = b.record_id) AND (a.modtime = b.latest) 
WHERE (((a.visit_type_id)=1)) 
GROUP BY a.studyrecord_id; 

我想,如果沒有記錄修改COUNT部分顯示爲零,因爲我認爲COUNT將評估爲Null

我曾嘗試以下,但仍然沒有結果:

IIF(ISNULL(COUNT(a.record_id)),0,COUNT(a.record_id)) AS newrecruits 

這是一個問題,因爲聯接是record_id?我試着將INNER更改爲LEFT,但也沒有收到任何結果。

Q 如果沒有符合條件的記錄,我如何獲得上述評估爲零?

編輯:

給一點細節推理。

研究表包含一個名爲'original_recruits'的字段,它基於使用數據庫之前的活動。

訪問表跟蹤new_recruits(每項研究的記錄數)。

我把這些在另一個查詢(original_recruits + new_recruits) - 如果沒有新的新兵,我仍然需要顯示original_recruits,所以如果沒有記錄我需要它評價爲零而不是null,所以最終總和仍然有效。

+0

您的查詢似乎沒有逗號。請發佈可以編譯的查詢。 – IndoKnight 2013-04-05 09:02:04

+0

當你的結果不依賴它時,你爲什麼要加入到子查詢中?另外,你有一個單獨的表,裏面有studyrecord詳細信息? – 2013-04-05 09:02:18

+0

添加了逗號。該表包含跟蹤更改的同一記錄的多個實例 - 子查詢選擇最新的編輯日期/時間,因此是最新的記錄版本。是將研究記錄詳細信息保存在單獨的表中。 – 2013-04-05 09:03:26

回答

0

我通過修改,我展示相結合的原始和新入職的結果,包括最終的查詢解決的問題那裏有IIF

SELECT 
    a.* 
    , IIF(IsNull([totalrecruits]),consents,totalrecruits)/a.target AS prog 
    , IIf(IsNull([totalrecruits]),consents,totalrecruits) AS trecruits 
FROM 
    q_latest_studies AS a 
LEFT JOIN q_totalrecruitment AS b 
ON a.studyrecord_id=b.studyrecord_id 
; 
0

看起來好像你想通過StudyRecords記錄記錄。
如果您在沒有記錄時需要計數爲零,則需要加入名爲StudyRecords的表。
你有嗎?否則,當你沒有行時,這是無意義的要求行!

讓我們假設StudyRecords存在,那麼該查詢應該看起來像這樣的事情:

SELECT 
    Count(a.record_id) AS newrecruits -- a.record_id will be null if there is zero count for a studyrecord, else will contain the id 
    sr.Id 
FROM 
    visits AS a 
    INNER JOIN 
    (
     SELECT 
      record_id 
      , MAX(modtime) AS latest 
     FROM 
      visits 
     GROUP BY 
      record_id 
    ) AS b 
    ON (a.record_id = b.record_id) AND (a.modtime = b.latest) 
    LEFT OUTER JOIN studyrecord sr 
     ON sr.Id = a.studyrecord_id 
WHERE a.visit_type_id = 1 
GROUP BY sr.Id 
+0

我在原來的問題中增加了一些解釋。 – 2013-04-05 09:23:27