Sql 组合两个查询,查找重复项,并且为NULL或空
我试图编写一个查询,其中它将报告SSN不为null或空(“”)且SSN只存在一次的所有帐户。(没有重复的SSN)。我正确地编写了这两个查询,但它们是分开的。你知道我将如何把两者结合起来吗?以下是查询: 查找重复项:Sql 组合两个查询,查找重复项,并且为NULL或空,sql,sql-server,Sql,Sql Server,我试图编写一个查询,其中它将报告SSN不为null或空(“”)且SSN只存在一次的所有帐户。(没有重复的SSN)。我正确地编写了这两个查询,但它们是分开的。你知道我将如何把两者结合起来吗?以下是查询: 查找重复项: SELECT [ContactID] , [SSN] FROM [dbo].[ContactMaster] GROUP BY [ContactID], [SSN] HAVING COUNT([SSN]) > 1 下面是第二个查找任何空SSN的查询: SELECT [
SELECT [ContactID]
, [SSN]
FROM [dbo].[ContactMaster]
GROUP BY [ContactID], [SSN]
HAVING COUNT([SSN]) > 1
下面是第二个查找任何空SSN的查询:
SELECT [SSN] FROM [dbo].[AccountContacts] WHERE [SSN] IS NULL OR [SSN] = ''
关于如何将这两个问题合并到一个查询中,有什么想法吗?谢谢 您可以像这样使用联合体:
SELECT [ContactID]
, [SSN]
FROM [dbo].[ContactMaster]
GROUP BY [ContactID], [SSN]
HAVING COUNT([SSN]) > 1
UNION
SELECT [ContactID], [SSN] FROM [dbo].[AccountContacts] WHERE [SSN] IS NULL OR [SSN] = ''
您应该能够在单个查询中同时拥有
WHERE
和HAVING
子句。其中在聚合处理之前处理,而具有的在聚合处理之后处理:
SELECT [ContactID], [SSN]
FROM [dbo].[ContactMaster]
WHERE [SSN] IS NULL OR [SSN] = ''
GROUP BY [ContactID], [SSN]
HAVING COUNT([SSN]) = 1
您的数据库中的
ContactManager
表中是否可能有空/NULLSSN
值?如果它被用作外键,则可能没有任何空值。您希望结果如何?添加示例数据和预期结果。抱歉,我希望预期结果只列出两列,contactID(int)和SSN(char(9))。将[contactID]添加到第二个查询(甚至可能将问题描述为两个查询的硬编码文本段),然后使用UNION将它们组合在一起?第一个查询实际上会返回重复项,不是唯一的