2016-01-14 26 views
0

這應該是非常簡單的,但是我是殘缺的。基本上找到所有沒有活動聯繫人的帳戶。 SO所有帳戶哪些聯繫人都是不活動的,或沒有任何聯繫人的帳戶。客戶關係管理如何在沒有主動聯繫人的情況下查找帳戶

我嘗試了兩種方法,一是查詢與左連接和一個帶有 'NOT EXISTS' 查詢,但一直返回什麼:

查詢1:

SELECT a.name, a.statecode AS AccountStatus, c.StateCode AS ContactStatus, c.FullName 
FROM dbo.Account a 
LEFT JOIN dbo.Contact c 
ON a.AccountId = c.ParentCustomerId 
AND c.statecode = 0 --active contacts 
WHERE c.ContactId IS NULL 

查詢2:

SELECT * 
    FROM dbo.Account a 
WHERE accountid IN (Select accountid FROM Account) 
    AND NOT EXISTS 
(Select c.ParentCustomerId FROM dbo.Contact c 
WHERE c.StateCode = 0 
AND c.ParentCustomerId IS NOT NULL) 
+0

可能是你有0的記錄這樣的: P –

回答

2

您的需求轉化爲:

  • 所有賬戶
  • 對於那些沒有接觸存在活躍

將轉化

SELECT 
    * 
FROM 
    dbo.Account a -- all accounts 
WHERE 
    NOT EXISTS(-- for which no contact exists 
    SELECT 
     1 
    FROM 
     dbo.Contact c 
    WHERE 
     c.ParentCustomerId=a.AccountId AND 
     c.StateCode<>0 -- that is active 
); 
+0

謝謝是的,這與我實際使用左連接時返回的行數相同,但非常感謝您的確認 – ichachan

0

你可以試試下面的查詢

SELECT ac.accountid,ac.name 
FROM account ac 
LEFT JOIN contact ca 
ON ac.accountid=ca.parentcustomerid 
GROUP BY ac.accountid,ac.name 
HAVING COUNT(DISTINCT ca.contactid)=0 
OR SUM(CASE WHEN ca.statecode=0 THEN 1 ELSE 0 END)>0 
相關問題