SQL Server帮助如何检索非空/空白记录

SQL Server帮助如何检索非空/空白记录,sql,sql-server,Sql,Sql Server,我是SQL Server新手。任何人都可以根据以下要求帮助检索结果吗 表客户: MemberID Name State Active ---------------------------------------- -2000 John Virginia Y -1999 Pearson Texas -1998 David Minnesota NULL -1997 Suraj NewYork -

我是SQL Server新手。任何人都可以根据以下要求帮助检索结果吗

表客户:

MemberID   Name     State      Active
----------------------------------------
-2000      John     Virginia     Y
-1999      Pearson  Texas   
-1998      David    Minnesota   NULL
-1997      Suraj    NewYork 
-1996      Brad     NewYork 
表OrderPlacement:

要求:从Customer表中检索Memberid,其中Customer表上的Active on为空,OrderPlacement表上所有服务行号记录上的Active字段为空,如果为Memberid的单个orderlineno on OrderPlacement填充了Active字段,则不应检索该字段选中

只能检索memberid-1997和-1998

我的问题是:

SELECT c.memberid
FROM customer c
INNER JOIN Orderplacement op ON c.memberid = op.memberid
WHERE ISNULL(c.active, '') = ''
  AND NOT EXISTS (SELECT op1.memberid Orderplacement op1
                  WHERE (ISNULL(op1.active, '') <> ''))
提前感谢您的帮助

这个怎么样? 它与您的基本相同,但有一些修复

SELECT c.memberid
FROM customer c
INNER JOIN Orderplacement op ON c.memberid = op.memberid
WHERE ISNULL(c.active, '') = ''
  AND NOT EXISTS (SELECT * FROM Orderplacement op1
                  WHERE c.memberid = op1.memberid and (ISNULL(op1.active, '') <> ''))

您只是忘记了exists语句中的joincorrelation

这个构造称为相关子查询。Op忘记了相关条件。还有一个问题,如何在不使用的情况下得到完全相同的结果。看起来它不适合使用。谢谢
SELECT c.memberid
FROM customer c
INNER JOIN Orderplacement op ON c.memberid = op.memberid
WHERE ISNULL(c.active, '') = ''
  AND NOT EXISTS (SELECT * FROM Orderplacement op1
                  WHERE c.memberid = op1.memberid and (ISNULL(op1.active, '') <> ''))