[英]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.