具有唯一值的SQL Select查询问题

用户名

我在使查询像我需要的那样工作时遇到问题。我需要为邮件制作一张标签,只希望选择没有电子邮件地址的人。另外,我只想向每个地址/家庭发送1个邮件。以下select语句返回我需要的所有字段。

SELECT [Family Members].[Family ID]
        ,[Family Members].[First Name]
        ,[Family Members].[Last Name]
        ,[Family Members].Email
        ,[Master Record].[Address 1]
        ,[Master Record].[Address 2]
        ,[Master Record].City
        ,[Master Record].STATE
        ,[Master Record].Zipcode
    FROM [Master Record]
    LEFT JOIN [Family Members] 
    ON [Master Record].[Family ID] = [Family Members].[Family ID];

现在来谈谈我的桌子。“家庭ID”是密钥,每个唯一的家庭ID都有一个唯一的地址。但是,每个家庭的[家庭成员]表中都包含多个成员,每个家庭成员可能/可能没有电子邮件地址。如果有家庭成员列出了电子邮件地址,我不想发送纸质邮件,而是希望将他们从表格中删除。我也不想在基于“家庭ID”的查询中看到多个结果

因此,为清楚起见,此查询的结果应具有唯一的“家庭ID”值,并且没有带有电子邮件地址的家庭成员。

我希望这是可能的。谢谢。

用户名

以下似乎对我有用。尽管我对使用所有Max()函数感到有些不安。我将继续在此处发布,看看有人是否有更优雅的解决方案。

SELECT [Master Record].[Family ID], Max([Master Record].[Last Name]) AS [MaxOfLast Name], 
Max([Master Record].[Address 1]) AS [MaxOfAddress 1], Max([Master Record].[Address 2]) AS 
[MaxOfAddress 2], Max([Master Record].City) AS MaxOfCity, Max([Master Record].State) AS 
MaxOfState, Max([Master Record].Zipcode) AS MaxOfZipcode, Max([Family Members].Email) AS 
MaxOfEmail
FROM [Master Record] LEFT JOIN [Family Members] ON [Master Record].[Family ID] = [Family 
Members].[Family ID]
GROUP BY [Master Record].[Family ID]
HAVING (((Count([Family Members].Email))=0));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章