このアクセス エラー メッセージに関していくつかの質問があることは承知していますが、私のクエリでは DISTINCT キーワードが使用されていないため、それらは関連していません。
2 つの同様のクエリがあります。1 つはクレジットを含み、もう 1 つはデビットを含みます。それらは、月ごとおよびカテゴリごとにグループ化されています。
最終的には、これら 2 つのテーブルを完全に外部結合して、それらを減算して各カテゴリの各月の結果の残高を取得できるようにする必要があります。
ただし、Access では完全な外部結合が許可されていないため、Right OUTER UNION LEFT OUTER WHERE Null を実行する必要があります。
今、Month フィールドと Category ID フィールドで RIGHT OUTER 結合を実行しようとしています。1 つのフィールドで外部結合を実行すると、期待どおりに機能します。他のフィールドで行うと期待どおりに機能しますが、両方のフィールドに参加すると、「フィールドが小さすぎて、追加しようとしたデータの量を受け入れることができません」というメッセージが表示されます
表1:
によって生産:
SELECT [transactions by category].[categoryid] AS CategoryID,
Format([account transactions].[transaction date], "mm/yy") AS MonthYear,
Nz(SUM([transactions by category].[amount]), 0) AS
[Category Total]
FROM [transactions by category]
INNER JOIN [account transactions]
ON [account transactions].[id] =
[transactions by category].[transactionid]
WHERE [account transactions].[transaction type] <> 8
GROUP BY Format([account transactions].[transaction date], "mm/yy"),
[transactions by category].[categoryid];
表 2:
によって生産:
SELECT [transactions by category].[categoryid],
Format([account transactions].[transaction date], "mm/yy") AS MonthYear,
Nz(SUM([transactions by category].[amount]), 0) AS
[Category Total]
FROM [transactions by category]
INNER JOIN [account transactions]
ON [account transactions].[id] =
[transactions by category].[transactionid]
WHERE [account transactions].[transaction type] = 8
GROUP BY Format([account transactions].[transaction date], "mm/yy"),
[transactions by category].[categoryid];
私にエラーを与える正しい結合:
SELECT * FROM
((SELECT [transactions by category].[categoryid],
Format([account transactions].[transaction date], "mm/yy")
AS MonthYear,
Nz(SUM([transactions by category].[amount]), 0) AS [Category Total]
FROM [transactions by category]
INNER JOIN [account transactions]
ON [account transactions].[id] =
[transactions by category].[transactionid]
WHERE [account transactions].[transaction type] = 8
GROUP BY Format([account transactions].[transaction date], "mm/yy"),
[transactions by category].[categoryid]) AS [Category Returns]
RIGHT JOIN
(SELECT [transactions by category].[categoryid] AS CategoryID,
Format([account transactions].[transaction date], "mm/yy")
AS MonthYear,
Nz(SUM([transactions by category].[amount]), 0) AS [Category Total]
FROM [transactions by category]
INNER JOIN [account transactions]
ON [account transactions].[id] =
[transactions by category].[transactionid]
WHERE [account transactions].[transaction type] <> 8
GROUP BY Format([account transactions].[transaction date], "mm/yy"),
[transactions by category].[categoryid]) AS [Category Debits]
ON [Category Returns].[categoryid] = [Category Debits].[categoryid]
AND [Category Returns].[monthyear] = [Category Debits].[monthyear] );
このエラーはテキスト フィールドで発生するようです。Format を使用すると、MonthYear フィールドはテキスト フィールドになりますか? それでも長さはわずか5文字です。さらに、MonthYear 列でのみ結合すると結合が機能しますが、両方のフィールドで結合すると失敗します。