1

O365 に移行するすべての電子メール メールボックスを一覧表示する [Mailbox Status] という名前のテーブルがあります。メールボックスはバッチで移行され (BatchNumber 列)、移行されると、MailboxState 列は「Client Migrated」に設定されます。

BatchNumber ごとに、移行されたメールボックスの数をカウントする必要があります (MailboxState = 'Client Migrated')。

SELECT [Mailbox Status].BatchNumber,
       DCount("MailboxState","[Mailbox Status]", "[MailboxState]='Client Migrated'") As MigratedCount
FROM [Mailbox Status]
WHERE [Mailbox Status].BatchNumber is not NULL
GROUP BY [Mailbox Status].BatchNumber ;

上記のクエリは、特定の BatchNumber の数を返すのではなく、すべての BatchNumber にわたって移行されたメールボックスの数を返しています。

私は何を間違っていますか?

4

1 に答える 1

1

私が正しく理解していれば、次を使用できます。

SELECT ms.BatchNumber, COUNT(*) As MigratedCount
FROM [Mailbox Status] as ms
WHERE ms.BatchNumber is not NULL AND
      ms.MailboxState = 'Client Migrated'
GROUP BY ms.BatchNumber ;

これにより、移行のないバッチが除外されます。それらも必要な場合は、条件付き集計を使用します。

SELECT ms.BatchNumber,
       SUM(IIF(ms.MailboxState = 'Client Migrated', 1, 0)) As MigratedCount
FROM [Mailbox Status] as ms
WHERE ms.BatchNumber is not NULL 
GROUP BY ms.BatchNumber ;

DCOUNT()COUNT()かなり異なります。 結果セット内の すべてのDCOUNT()行のレコードをカウントします。集計クエリで 1 行に要約された行数を決定するための集計関数です。COUNT()

于 2019-08-11T12:40:40.790 に答える