繁体   English   中英

子查询的列总和

[英]Sum of column from subquery

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

  • [Shared Mailbox]包含Exchange中共享邮箱(SMB)的列表。
  • [Shared Mailbox User]列出了有权访问共享邮箱的电子邮件地址。
  • [Exchange Census]包含所有邮箱的详细信息,无论是个人邮箱还是共享邮箱。 [Exchange Mailbox].MailboxSize(MB)[Exchange Mailbox].MailboxSize(MB)是邮箱的大小。

对于每个[Shared Mailbox].SharedMailbox ,我需要对有权访问它的用户邮箱的数量进行[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 Census表加入“ Shared Mailbox User表(因为它是您要计算其大小的用户邮箱),并且完全省略了相关子查询。

我建议采取以下措施:

select
    sm.sharedmailbox,
    sm.mailboxsmtpaddress,
    sum(ec.[MailboxSize(MB)]) as usermailboxvolume
from
    (
        [shared mailbox] sm inner join [shared mailbox user] su on
        sm.sharedmailbox = su.sharedmailbox
    ) 
    inner join [Exchange Census] ec on su.useremail = ec.primarysmtpaddress
group by
    sm.sharedmailbox,
    sm.mailboxsmtpaddress

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM