【发布时间】:2016-07-14 11:59:56
【问题描述】:
我在 Access 中编写了一条 SQL 语句,该语句在其“代码”列中查找具有相同值的数据行,然后查看具有相同“代码”值的那些行并找到具有相反“货币 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”,但它填充了奇数行。
如何让子查询仅填充相反对的 Line 字段。
Image from before I put in the current code
提前谢谢你。
【问题讨论】:
-
我认为您也应该显示前表。假设有两条记录为
+0.9,一条记录为-0.9,则底部的 3 行非常有意义。 -
如果您有重复,这在 MS Access 查询中将很难做到。我可能会建议您在应用程序中执行此操作。其他数据库的功能可以在单个查询中实现。
-
我添加了之前的。有没有办法编写代码,让它只做 2 对?
-
Gordon,您建议使用什么应用程序或数据库,之后我可以将其迁移回 Access 吗?
-
此表中还有其他列可用于将这些对链接在一起吗?