我每月都会收到一组表格,这些表格告诉我会员当月支付的金额。如果他们不付款,他们就不会出现在桌子上。我想弄清楚随着时间的推移每个成员已经支付了多少钱。成员可能出现在一个月的表格中,但不会出现在另一个月的表格中。每个表共享一个链接到成员的“ ID”,但是由于每月的可变性,并非所有表都具有相同的列长。每个表都包含一个成员以及他当月支付的会费金额。因此,我遇到了“两个选定表或联合查询中的列数不匹配”的错误。
Running Access 365,粘贴了两组代码:
当我尝试进行INNER JOIN时,我会丢失所有表中未包含的条目。
当我尝试UNION时,出现错误:“两个选定表或联合查询中的列数不匹配。”
SELECT [2018-9 Dues Deduct].ID, [2018-9 Dues Deduct].Name, [2018-9 Dues Deduct].[Curr Dedn], [2018-10 Dues Deduction].[Curr Dedn], [2018-11 Dues Deductions].[Curr Dedn], [2018-12 Dues Deductions].[Curr Dedn]
FROM (([2018-9 Dues Deduct]
INNER JOIN [2018-10 Dues Deduction] ON [2018-9 Dues Deduct].ID = [2018-10 Dues Deduction].ID)
INNER JOIN [2018-11 Dues Deductions] ON [2018-10 Dues Deduction].ID = [2018-11 Dues Deductions].ID)
INNER JOIN [2018-12 Dues Deductions] ON [2018-11 Dues Deductions].ID = [2018-12 Dues Deductions].ID;
SELECT
[2018-9 Dues Deduct].ID,
[2018-9 Dues Deduct].Name,
[2018-9 Dues Deduct].[Curr Dedn],
[2018-10 Dues Deduction].[Curr Dedn]
FROM [2018-9 Dues Deduct]
INNER JOIN [2018-10 Dues Deduction] ON [2018-9 Dues Deduct].ID = [2018-10 Dues Deduction].ID
GROUP BY [2018-9 Dues Deduct].ID, [2018-9 Dues Deduct].Name, [2018-9 Dues Deduct].[Curr Dedn], [2018-10 Dues Deduction].[Curr Dedn]
UNION
SELECT
[2018-10 Dues Deduction].ID,
[2018-10 Dues Deduction].Name,
[2018-10 Dues Deduction].[Curr Dedn],
[2018-11 Dues Deductions].[Curr Dedn]
FROM [2018-10 Dues Deduction]
INNER JOIN [2018-11 Dues Deductions] ON [2018-10 Dues Deduction].ID = [2018-11 Dues Deductions].ID
UNION
SELECT
[2018-11 Dues Deductions].ID,
[2018-11 Dues Deductions].Name,
[2018-11 Dues Deductions].[Curr Dedn]
FROM [2018-11 Dues Deductions]
INNER JOIN [2018-12 Dues Deductions] ON [2018-11 Dues Deductions].ID = [2018-12 Dues Deductions].ID;
我的目标是查看所有成员(ID)的所有扣除额(Curr Dedn),无论他们本月是否付款。预先感谢。
答案 0 :(得分:0)
您在第二个发布的代码片段上收到错误? (因为有工会)
长度=行数是 no 问题,要合并的列数是您的问题。那就是你的错误所表达的。
我看到两个原因:
关于1 .: 您首先选择4列,第二选择4列,第三选择只有3列。
=>在第3个选择中需要第4列。如果没有数据,请创建一个假人。
[由于评论“有效”而更新]: 试试这个-我不知道“虚拟”或“虚拟”是否正确
SELECT
[2018-9 Dues Deduct].ID,
[2018-9 Dues Deduct].Name,
[2018-9 Dues Deduct].[Curr Dedn],
[2018-10 Dues Deduction].[Curr Dedn]
FROM [2018-9 Dues Deduct]
INNER JOIN [2018-10 Dues Deduction] ON [2018-9 Dues Deduct].ID = [2018-10 Dues Deduction].ID
GROUP BY [2018-9 Dues Deduct].ID, [2018-9 Dues Deduct].Name, [2018-9 Dues Deduct].[Curr Dedn], [2018-10 Dues Deduction].[Curr Dedn]
UNION
SELECT
[2018-10 Dues Deduction].ID,
[2018-10 Dues Deduction].Name,
[2018-10 Dues Deduction].[Curr Dedn],
[2018-11 Dues Deductions].[Curr Dedn]
FROM [2018-10 Dues Deduction]
INNER JOIN [2018-11 Dues Deductions] ON [2018-10 Dues Deduction].ID = [2018-11 Dues Deductions].ID
UNION
SELECT
[2018-11 Dues Deductions].ID,
[2018-11 Dues Deductions].Name,
[2018-11 Dues Deductions].[Curr Dedn],
"dummy"
FROM [2018-11 Dues Deductions]
INNER JOIN [2018-12 Dues Deductions] ON [2018-11 Dues Deductions].ID = [2018-12 Dues Deductions].ID;