Sql 子查询中列的和

Sql 子查询中列的和,sql,ms-access,sum,subquery,Sql,Ms Access,Sum,Subquery,下图表示Access数据库中三个表之间的关系 表[共享邮箱]包含Exchange中共享邮箱(SMB)的列表 表[共享邮箱用户]列出了可以访问共享邮箱的电子邮件地址 表[Exchange普查]包含所有邮箱的详细信息,无论是个人邮箱还是共享邮箱。列[Exchange Mailbox].MailboxSize(MB)是邮箱的大小 对于每个[Shared Mailbox].SharedMailbox,我需要对有权访问它的用户邮箱的数量求和 我正在处理以下查询: SELECT [Shared Mai

下图表示Access数据库中三个表之间的关系

  • [共享邮箱]
    包含Exchange中共享邮箱(SMB)的列表
  • [共享邮箱用户]
    列出了可以访问共享邮箱的电子邮件地址
  • [Exchange普查]
    包含所有邮箱的详细信息,无论是个人邮箱还是共享邮箱。列
    [Exchange Mailbox].MailboxSize(MB)
    是邮箱的大小
对于每个
[Shared Mailbox].SharedMailbox
,我需要对有权访问它的用户邮箱的数量求和

我正在处理以下查询:

SELECT  [Shared Mailbox].SharedMailbox, [Shared Mailbox].MailboxSmtpAddress,
(select Sum([MailboxSize(MB)]) from [Exchange Census] Where ([Shared Mailbox].SharedMailbox = [Shared Mailbox User].SharedMailbox) And 
([Shared Mailbox User].UserEmail = [Exchange Census].PrimarySmtpAddress) Group by [Shared Mailbox].SharedMailbox ) AS UserMailboxVolume
FROM ([Shared Mailbox] 
INNER JOIN [Exchange Census] ON [Shared Mailbox].MailboxSmtpAddress = [Exchange Census].PrimarySmtpAddress) 
INNER JOIN [Shared Mailbox User] ON [Shared Mailbox].SharedMailbox = [Shared Mailbox User].SharedMailbox;
这将生成一个如下所示的结果集,其中子查询返回子邮箱的大小,而不是它们的总和:

我需要做什么更改才能为每个SMB获得一行,其中包含具有访问权限的用户的邮箱的聚合卷


除非我误解了您的数据结构或要求,否则我认为您应该将
Exchange普查
表加入到
共享邮箱用户
表中(因为您要计算的是用户的邮箱),并完全忽略相关子查询

我会提出以下建议:

选择
sm.sharedmailbox,
sm.mailboxsmtpaddress,
作为usermailboxvolume的总和(ec.[MailboxSize(MB)]
从…起
(
[共享邮箱]sm内部加入[共享邮箱用户]su on
sm.sharedmailbox=su.sharedmailbox
) 
su.useremail=ec.primarysmtpaddress上的内部加入[Exchange Census]ec
分组
sm.sharedmailbox,
sm.mailboxsmtpaddress

除非我误解了您的数据结构或要求,否则我认为您应该将
Exchange普查
表加入到
共享邮箱用户
表中(因为您要计算的是用户的邮箱),并完全忽略相关子查询

我会提出以下建议:

选择
sm.sharedmailbox,
sm.mailboxsmtpaddress,
作为usermailboxvolume的总和(ec.[MailboxSize(MB)]
从…起
(
[共享邮箱]sm内部加入[共享邮箱用户]su on
sm.sharedmailbox=su.sharedmailbox
) 
su.useremail=ec.primarysmtpaddress上的内部加入[Exchange Census]ec
分组
sm.sharedmailbox,
sm.mailboxsmtpaddress

应该编辑问题以显示样本原始数据和所需输出。让我澄清一下。对于SharedMailbox 208CST,正确的结果将是一行,其中UserMailbox是上述屏幕截图中显示的数字的总和。Peh:我应用了代码编辑,但它不会产生所需的结果。我仍然为每个邮箱获取多个(详细信息)行,而不是一个单独的行作为它们的总和。仍然在寻找示例原始数据。我知道您希望每个SharedMailbox一行,但我需要数据进行测试。我对人际关系有些困惑。所以,用一些代表性的数据和来自样本的结果显示表格。应该编辑问题以显示样本原始数据和期望的输出。让我澄清一下。对于SharedMailbox 208CST,正确的结果将是一行,其中UserMailbox是上述屏幕截图中显示的数字的总和。Peh:我应用了代码编辑,但它不会产生所需的结果。我仍然为每个邮箱获取多个(详细信息)行,而不是一个单独的行作为它们的总和。仍然在寻找示例原始数据。我知道您希望每个SharedMailbox一行,但我需要数据进行测试。我对人际关系有些困惑。因此,用一些代表性数据和来自样本的结果显示表格。