我在Access中编写了一个SQL语句,用于查找“' Code”中的相同值的数据行。列,然后查看具有相同'代码'值并查找具有相反' Money Amt'的行。列值(例如,一行的值为200,另一行的值为-200),标有行的列将填入数字' 999'当找到具有相同代码的这些相反值的对时。
问题是我的一些行在奇数组中配对而不是在2对中配对。我希望对于相反的值有一个1:1的关系,这样它们基本上相互抵消。
这是我到目前为止获得结果的代码。
UPDATE [Actual Debt]
SET LineItem = 999
WHERE EXISTS
(SELECT * FROM [Actual Debt] as ad2
WHERE ad2.Code = [Actual Debt].Code
AND ad2.[Money Amt] = - [Actual Debt].[Money Amt]);
在图片中你可以看到,在前4行中,代码填充了2对反对的Money Amt'价值如预期。但是,在底部的3行中,应该只有1对' 999',而是填充了奇数行。
如何使子查询仅填充对方的“线”字段。
Image from before I put in the current code
提前谢谢你。
答案 0 :(得分:0)
现在戈登我相信这可以在MS Access中完成。您可以在Access中执行您可以在其他数据库中执行的所有操作,只需要确定方法。然而,在这种特殊情况下,导致当前问题的基础数据似乎存在问题,并且在没有看到整个源表的情况下很难确定该错误是什么。我仍然冒昧地猜测,如果您自己运行子查询(如下所示),您将获得我在下面显示的数据。尝试只运行查询的SELECT部分,看看你得到了什么。
SELECT *
FROM ActualDebt AS Ad2
WHERE Ad2.Code = ActualDebt.Code
AND Ad2.MoneyAmt = ((-1) * ActualDebt.MoneyAmt);
根据我在表格中看到的内容,查询结果很可能如下所示
Code | MoneyAmt
MHT .3
MHT .3
MHT -.3
MHT -.3
RLO .4
RLO .6
MQR .9
MQR -.9
MQR .9
所以Gordon如果我上面提到的是问题,那么是的,你需要提供更多信息才能确定解决方案,因为现在以编程方式无法区分第一个MQR .9和其他MQR .9 - 这似乎是问题的根源
我会留意这篇文章,如果你编辑你的问题,我会编辑这个答案来帮助你。