1

バックグラウンド:

Access データベースにテーブルがあります ([tblMyTable] と呼びましょう)。テーブルには、各月に数千のエントリがあり、各エントリはカテゴリに属しています。

ID  Month  Category
--  -----  --------
 1      1  White
 2      1  Black
 3      2  White
...etc.

問題:

(やや簡略化された)クエリを実行すると

SELECT tblMyTable.Month, COUNT(tblMyTable.ID) AS CountedIDs 
FROM tblMyTable 
WHERE tblMyTable.Category = "Black" 
GROUP BY tblMyTable.Month

戻り値は次のとおりです。

Month  Count
-----  -----
    1      1

一方、私が期待/必要とするものは次のとおりです。

Month  Count
-----  -----
    1      1
    2      0

関数を使用してNZ()「0」を強制的に返そうとしましたが、それもうまくいかなかったため、ここにいるすべての人に連絡しています...

上記で何か不足していたり​​、奇妙に見える場合は、大声でお知らせください。私はそれに対処しようとします.

4

1 に答える 1

1

[MonthNumbers] という名前のテーブルを次のように作成します

MonthNumber
-----------
          1
          2
          3
          4
          5
          6
          7
          8
          9
         10
         11
         12

次に、次のクエリを使用します (元のクエリがサブクエリとして含まれています)。

SELECT 
    mn.MonthNumber AS Month,
    Nz(gb.CountedIDs, 0) AS CountedIDs
FROM
    MonthNumbers mn
    LEFT JOIN
    (
        SELECT 
            tblMyTable.Month, 
            COUNT(tblMyTable.ID) AS CountedIDs 
        FROM tblMyTable 
        WHERE tblMyTable.Category = "Black" 
        GROUP BY tblMyTable.Month
    ) gb
        ON gb.Month = mn.MonthNumber

戻る

Month  CountedIDs
-----  ----------
    1  1         
    2  0         
    3  0         
    4  0         
    5  0         
    6  0         
    7  0         
    8  0         
    9  0         
   10  0         
   11  0         
   12  0         
于 2013-11-11T10:01:05.363 に答える