MS ACCESS-无法从另一个表中的值中减去查询返回的值

时间:2019-02-05 23:50:19

标签: sql ms-access

我有两个表:项目表和发票

项目表:

ID   |   UR_No   |  Budget_Total  |  Budget_To_Date
1    |  329000   |   150000.00    |
2    |  403952-C |   33000        |

发票表:

ID   |   URID   |  InvAmount
1    |  329000  |  157.00
2    |  329000  |   32.00
3    |  403952-C|  193.00

“发票”表已计入一个项目的金额。一个项目具有唯一的UR号(UR_No),并且发票具有重复的UR号(URID),这意味着同一个项目按月计费并且具有不同的发票号。

我想要实现的是:

ID   |   UR_No   |  Budget_Total  |  Budget_To_Date
1    |  329000   |   150000.00    |   149811.00
2    |  403952-C |   33000        |   32807

首先,在“发票”表上进行汇总查询,以获取向项目收取的运行资金总额:

SELECT Invoice.URID, Sum(Invoice.InvAmount) AS total
FROM Invoice
GROUP BY Invoice.URID;

这将返回以下内容:

URID    |  InvAmount
329000  |  189.00
403952-C|  193.00

然后将其导出到数据库中名为Invoice_Totals的表

然后,我想使用UR_No和URID将Invoice_Totals表连接到Project表,并通过从项目表中名为Budget_total的字段中减去查询表中的Invoice_Totals.total来计算Project表中现有的空字段“ Budget_to_Date” 。在尝试该操作之前,我只想查询返回值:

SELECT Project.Budget_Total - Invoice_Totals.total 
FROM Project INNER JOIN Invoice_Totals ON Project.UR_No = Invoice_Totals.URID;

这将返回错误: 无法加入备注,OLE或超链接对象(Project.UR_No = Invoice_Totals.URID)

我查找了一条SO帖子,并尝试使用左255:

SELECT Project.Budget_Total - Invoice_Totals.total 
FROM Project INNER JOIN Invoice_Totals ON left(Project.UR_No,255) = left(Invoice_Totals.URID, 255);

这不返回任何内容。如果可能的话,如何从“预算”到“日期”字段或新字段的“项目”表中的预算总额中减去汇总字段?

1 个答案:

答案 0 :(得分:0)

您的注释状态链接字段是LongText,它是Memo数据类型的同义词,因此错误消息清楚地标识了原因。将字段类型更改为ShortText。

但是,实际上应该将Project表中的ID字段用作主键,并将其(而不是UR_No)保存到Invoice表中。数字是更有效的键。