这应该是非常简单的,但我是残局。基本上找到所有没有活动联系人的帐户。因此,所有联系人的帐户都处于非活动状态,或者帐户中没有任何联系人。
我尝试了两种方法,一种是使用左连接进行查询,另一种是使用“不存在”进行查询,但一直没有返回任何内容:
查询1:
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)
查询2:
string fm = "yyyy-MM-dd HH:mm:ss.fff";
string str = DateTime.Now.ToString(fm, CultureInfo.InvariantCulture);
DateTime dt = DateTime.ParseExact(str, fm, CultureInfo.InvariantCulture);
答案 0 :(得分: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
);
答案 1 :(得分: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