2017-01-15 97 views
0

我想爲我們的CRM程序中的某些報告編寫一個視圖,並且我遇到了計數問題。我們正在嘗試根據特定標準來計算推薦次數。我覺得我寫視圖的方式不正確。我正在嘗試使用CASE聲明來確保它能夠計算出我想要的值,但是我得到的數字我無法通過逆向工程進行驗證。根據特定標準計數值SQL

我是否正確地構造了CASE聲明?

(注:我也知道客戶端的拼寫錯誤,遺憾的是誰寫數據庫之前,我得到了它有一些拼寫問題)。

這是我至今寫:

SELECT Comp_Name, Count(Case WHEN comp_primaryreferralsource IS NOT NULL and Comp_type = 'Client' Then 1 
         ELSE NULL END) AS Client_Referrals, 
     Count(Case WHEN lead_companyprimaryreferralsource IS NOT NULL Then 1 Else Null End) AS Target_Referrals, 
     Count(Case WHEN comp_primaryreferralsource IS NOT NULL and Comp_type = 'Prospect' Then 1 Else Null End) As Prospective_Client_Referral, 
     Count(Case WHEN comp_primaryreferralsource IS NOT NULL and Comp_type = 'Lost_Clent' Then 1 Else Null End) AS Lost_Client_Referral, 
     Count(Case WHEN mcgr_companyid IS NOT NULL Then 1 Else NULL END) AS Intro_By_MCG 

FROM Company 

RIGHT JOIN Lead on Lead_PrimaryCompanyID = Comp_CompanyId 
RIGHT JOIN MCGRelationships on mcgr_companyid = Comp_CompanyId 
WHERE COMP_Name IS NOT NULL 

Group By Comp_Name 

這裏是我得到的一個樣本:

Client1  0 0 0 0 1 
    Client2  0 0 0 0 2 
    Client3  0 0 0 0 1 
    Client4  0 0 0 0 1 
    Client5  0 0 0 0 2 
    Client6  0 0 0 0 2 
    Client7  0 0 4 0 4 
    Client8  0 0 0 0 2 
    Client9  0 2 2 0 2 
    Client10  12 6 0 0 12 
    Client11  0 0 0 0 2 

當我只是這個表上運行的查詢,其中客戶端10是主推薦來源,我什麼也沒得到。所以我不能說明這12個實例。

+0

你得到了什麼數字? –

+0

您可以添加樣本數據和預期結果嗎? –

+0

用樣本數據和輸出編輯您的_question_。 –

回答

0

我認爲你的問題可能在加入MCGRelationships,如果每個公司記錄可以有多個關係記錄。如果我正確地關注了你,如果該記錄存​​在於MCGRelationships中,無論其出現的次數如何,都希望Intro_By_MCG爲1。通過加入表格,您的查詢將計算每個與領導來自的公司相關的MCGRelationship的領導人數。試試這個,讓我們知道如果結果是不同的:

SELECT Comp_Name, Count(Case WHEN comp_primaryreferralsource IS NOT NULL and Comp_type = 'Client' Then 1 
        ELSE NULL END) AS Client_Referrals, 
    Count(Case WHEN lead_companyprimaryreferralsource IS NOT NULL Then 1 Else Null End) AS Target_Referrals, 
    Count(Case WHEN comp_primaryreferralsource IS NOT NULL and Comp_type = 'Prospect' Then 1 Else Null End) As Prospective_Client_Referral, 
    Count(Case WHEN comp_primaryreferralsource IS NOT NULL and Comp_type = 'Lost_Clent' Then 1 Else Null End) AS Lost_Client_Referral, 
    Count(Case WHEN EXISTS (Select Comp_CompanyId FROM MCGRelationships WHERE mcgr_companyid = Comp_CompanyId) Then 1 Else NULL END) AS Intro_By_MCG 

FROM Company 

RIGHT JOIN Lead on Lead_PrimaryCompanyID = Comp_CompanyId 
WHERE COMP_Name IS NOT NULL 

Group By Comp_Name 
+0

問題是它們是不同的實例。一個是他們向我們介紹的客戶,另一個是我們自制的客戶。關係表只包含我們進行介紹的那些表,因此我需要保持這些數據的連接。 –