请帮助形成此T-SQL查询以返回正确的帐户结果

请帮助形成此T-SQL查询以返回正确的帐户结果,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个accounts和一个contacts表,我正在尝试查找任何与该帐户关联的联系人都没有特定字段值的帐户 场景1:帐户华夫饼干屋有3个联系人,其中1个联系人在字段1中有一个值。结果集中未返回此帐户 场景2:Account Panakehouse有5个联系人,字段Field1中没有一个联系人的值设置为TRUE。此帐户在结果集中返回 我尝试了这段代码,它将返回任何联系人为空或空的帐户 select distinct a.accountid from account as a inner joi

我有一个accounts和一个contacts表,我正在尝试查找任何与该帐户关联的联系人都没有特定字段值的帐户

场景1:帐户华夫饼干屋有3个联系人,其中1个联系人在字段1中有一个值。结果集中未返回此帐户

场景2:Account Panakehouse有5个联系人,字段Field1中没有一个联系人的值设置为TRUE。此帐户在结果集中返回

我尝试了这段代码,它将返回任何联系人为空或空的帐户

select distinct a.accountid
from account as a
inner join contact as c
on a.accountid = c.accountid
where (c.Field1 is null or c.Field1 = '')

您非常接近—只需使用一些聚合GROUP BY和MAX函数即可获得所需内容,如下所示:

select a.accountid
from account as a
inner join contact as c
on a.accountid = c.accountid
group by a.accountid
having MAX(isnull(c.Field1, '')) = ''

您非常接近—只需使用一些聚合GROUP BY和MAX函数即可获得所需内容,如下所示:

select a.accountid
from account as a
inner join contact as c
on a.accountid = c.accountid
group by a.accountid
having MAX(isnull(c.Field1, '')) = ''
试试这个:

SELECT  *
FROM    Accounts a
WHERE   NOT EXISTS ( SELECT *
                     FROM   contact c
                     WHERE  a.accountid = c.accountid
                            AND c.Field1 = 'TRUE' )
或:

试试这个:

SELECT  *
FROM    Accounts a
WHERE   NOT EXISTS ( SELECT *
                     FROM   contact c
                     WHERE  a.accountid = c.accountid
                            AND c.Field1 = 'TRUE' )
或:


这很好,我学会了一些新的语法!感谢您快速简洁的回复!:这很好,我学会了一些新的语法!感谢您快速简洁的回复!: