我正在尝试编写单个查询,它将报告SSN不为空或空的所有帐户(<>'')并且SSN仅存在一次。 (没有重复的SSN)。我正确地写了两个查询,但是分开了。关于如何将两者结合起来的任何想法?以下是以下查询:
查找重复项:
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] = ''
关于如何将这两者合并为一个查询的任何想法?谢谢!
答案 0 :(得分:0)
您可以像这样使用UNION:
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] = ''
答案 1 :(得分:0)
您应该能够在一个查询中同时拥有WHERE
和HAVING
子句。在汇总处理之前处理WHERE
,之后处理HAVING
:
SELECT [ContactID], [SSN]
FROM [dbo].[ContactMaster]
WHERE [SSN] IS NULL OR [SSN] = ''
GROUP BY [ContactID], [SSN]
HAVING COUNT([SSN]) = 1
甚至可能在数据库的SSN
表中有空/ NULL ContactManager
值吗?如果它被用作外键,则可能没有任何NULL值。