【发布时间】:2020-01-05 21:44:25
【问题描述】:
下图表示 Access 数据库中三个表之间的关系。
- 表
[Shared Mailbox]包含Exchange 中的共享邮箱(SMB) 列表。 - 表
[Shared Mailbox User]列出了有权访问共享邮箱的电子邮件地址。 - 表
[Exchange Census]包含所有邮箱的详细信息,无论是个人邮箱还是共享邮箱。[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 获得一行以及具有访问权限的人的邮箱总量?
【问题讨论】:
-
应该编辑问题以显示示例原始数据和所需的输出。
-
让我澄清一下。对于 SharedMailbox 208CST,正确的结果是单行,其中 UserMailbox 是上面屏幕截图中显示的数字的总和。
-
Peh:我应用了您的代码编辑,但是它没有产生预期的结果。我仍然为每个邮箱获得多个(详细)行,而不是单个行的总和。
-
仍在寻找样本原始数据。我知道您希望每个 SharedMailbox 有一行,但我需要数据来测试。我对人际关系有些困惑。因此,请展示包含一些代表性数据和结果的表格,这些数据和结果应该来自样本。
标签: sql ms-access sum subquery