我已閱讀其他問題,答案似乎無法解決我的情況。我有一張公司名稱表和一份與這些公司有關的活動表。Count()返回0而不是NULL
我需要計算一個指定日期範圍內的活動量,並返回0,如果有沒有。我還需要獲取最後一次活動的日期(即使它超出指定的日期範圍)。我使用LEFT OUTER JOIN
,我試過ISNULL()
(雖然,如果它不存在,它怎麼檢查它是否爲空?),我不知道該從哪裏去。
這是我有:
SELECT v_rpt_Company.Company_Name, COUNT(DISTINCT SO_Activity.SO_Activity_Recid) as touches, MAX(SO_Activity.Date_Entered) As lasttouch
FROM v_rpt_Member LEFT OUTER JOIN
Company_Team ON v_rpt_Member.Member_RecID = Company_Team.Member_RecID LEFT OUTER JOIN
v_rpt_Company ON Company_Team.Company_RecID = v_rpt_Company.Company_RecID LEFT OUTER JOIN
SO_Activity ON v_rpt_Company.Company_RecID = SO_Activity.Company_RecID
WHERE (Company_Team.AcctMgr_Flag = 1) AND (v_rpt_Member.Member_ID = @member) AND ((SO_Activity.Last_Update >= CONVERT(datetime, @date_start, 101)) AND (SO_Activity.Last_Update <= CONVERT(datetime, @date_end, 101)))
GROUP BY v_rpt_Company.Company_Name
ORDER BY v_rpt_Company.Company_Name ASC,lasttouch DESC,touches DESC
這是最終的答案:(謝謝大家)
SELECT a.touches, a.name,b.lasttouch
FROM (
SELECT v_rpt_Company.Company_Name as name,
COUNT(DISTINCT SO_Activity.SO_Activity_Recid) as touches
FROM v_rpt_Company
LEFT OUTER JOIN Company_Team ON Company_Team.Company_RecID = v_rpt_Company.Company_RecID AND Company_Team.AcctMgr_Flag = 1
LEFT OUTER JOIN v_rpt_Member ON v_rpt_Member.Member_RecID = Company_Team.Member_RecID
LEFT OUTER JOIN SO_Activity ON v_rpt_Company.Company_RecID = SO_Activity.Company_RecID AND ((SO_Activity.Last_Update >= CONVERT(datetime, @date_start, 101)) AND (SO_Activity.Last_Update <= CONVERT(datetime, @date_end, 101)))
WHERE v_rpt_Member.Member_ID = @member
Group By v_rpt_Company.Company_Name) As a
LEFT OUTER JOIN
(SELECT MAX(SO_Activity.Date_Entered) As lasttouch, v_rpt_Company.Company_Name as name
FROM v_rpt_Company
LEFT OUTER JOIN Company_Team ON Company_Team.Company_RecID = v_rpt_Company.Company_RecID AND Company_Team.AcctMgr_Flag = 1
LEFT OUTER JOIN v_rpt_Member ON v_rpt_Member.Member_RecID = Company_Team.Member_RecID
LEFT OUTER JOIN SO_Activity ON v_rpt_Company.Company_RecID = SO_Activity.Company_RecID
WHERE v_rpt_Member.Member_ID = @member
GROUP BY v_rpt_Company.Company_Name) as b
ON a.name = b.name
,並已顯示'NULL'的'COUNT'當療法是'Company_name'值?還是它確實是文'Company_name'是'NULL' ? – Lamak 2012-03-15 17:59:07
你可以發佈你的表結構嗎? – 2012-03-15 18:00:44
不,不會爲有0個活動的公司返回行。我無法發佈表結構,它們包含敏感的公司數據,對不起。 – 2012-03-15 18:02:38