我有3张桌子,
Table_One:
Table_Two(即“中间表”:
还有Table_Three:
关系如下:
我不知道为什么Total
一词没有作为下一个查询的结果显示
SELECT
ID_Table_One,
Select_Info,
Deb,
Cre
FROM Table_Two
UNION
SELECT
ID_Table_One,
"Total",
IIF(SUM(Deb) - Sum(Cre) >= 0, SUM(Deb) - Sum(Cre), "" ),
IIF(SUM(Deb) - Sum(Cre) <= 0, SUM(Deb) - Sum(Cre), "" )
FROM Table_Two
GROUP BY ID_Table_One;
这是上面查询的结果:
字段Select_Info
是一个“下拉列表”字段,我的意思是,它在下一个查询中显示了已经存在的信息:
SELECT
[Table_Three].[Id_Table_Three],
[Table_Three].[Id_Table_Three_Plus_Info]
FROM Table_Three;
我认为,执行此操作的正确过程是调用要在查询的最后SELECT
中显示的Table_Three的ID 600,这是正确的做法吗?如果是那样,怎么办?
如果我使用相同的查询关闭Access,则会得到以下结果:
正如您所注意到的,现在显示寄存器Total
,但仅显示“数字部分”,我缺少-A,-B和-C部分。我尝试过更改Id_Table_Three_Plus_Info字段(A-100)中的顺序,但它始终显示数字,而不显示字母。它们都是文本值。
我可以通过创建一个具有我需要的所有值(100-A,200-B ... 600-TOTAL)的新字段来解决此问题,我的意思是,通过查询填充{ {1}}字段。但是我想对这种罕见的查询行为提出建议。
答案 0 :(得分:1)
看到您已经编辑了问题并且现在添加了更多详细信息,我认为您只需要编辑UNION查询的第二部分,就可以将“ Total”的值替换为600,如下所示:
SELECT
ID_Table_One,
600,
IIF(SUM(Deb) - Sum(Cre) >= 0, SUM(Deb) - Sum(Cre), "" ),
IIF(SUM(Deb) - Sum(Cre) <= 0, SUM(Deb) - Sum(Cre), "" )
FROM Table_Two
GROUP BY ID_Table_One;
这将根据需要显示“ 600-Total”的查找值。
答案 1 :(得分:0)
尝试使用别名:
ID_Table_One,
"Total" As Select_Info,
IIF(SUM(Deb) - Sum(Cre) >= 0, SUM(Deb) - Sum(Cre), "" ),
IIF(SUM(Deb) - Sum(Cre) <= 0, SUM(Deb) - Sum(Cre), "" )