我有一个MS Access表,在名为Code
的表中有3列名为[Money Amt]
,Line
和Actual Debt
的列。
我正在尝试编写一个SQL语句来帮助我自动执行此过程。我希望语句在其代码列中查找具有相同值的行。然后查看[Money Amt]
并找到具有相反值的对(在这种情况下,该对将是200
和-200
)。当它找到具有相同Code
值且反向[Money Amt]
的行对时,它将使用Line
填充999
列值。
在这种情况下,第二行和第四行将被选为对,并且得到的行值为999
。
我知道这可能需要INNER JOIN
。除此之外,我还没有走得太远,因为是新手,我不知道如何构建INNER JOIN
。
UPDATE [Actual Debt] SET Line = 999;
答案 0 :(得分:1)
我不确定MS Access语法,但这是一般的想法。
update t1
set line = 999
from [actual debt] t1 join [actual debt] t2 on t1.code = t2.code
and t1.[money amt] = t2.[money amt] * -1
答案 1 :(得分:1)
你正在走上正轨。这是一种方式:
update [Actual Debt]
set line = 999
where exists (select 1
from [Actual Debt] as ad2
where ad2.code = [Actual Debt].code and
ad2.[Money Amt] = - [Actual Debt].[Money Amt]
);