我有一个表,当偶尔导入时,贷方和借方会在其中切换—所以我有一些代码来设置一个变量,然后在它匹配时进行交换,但是我无法让它在if语句中运行,我尝试将它放在存储过程中,但也无法在if语句中运行存储过程。你有什么建议?代码见下文。谢谢
set @TotalCr = (select max(TotalCredit) from mbs_headers);
If (@TotalCr = (select sum(PDebit) from mbs_details) and @TotalCr =! (select sum(PCredit) from mbs_details))
then UPDATE mbs_detailstest SET PCredit=@tmp:=PCredit, PCredit=PDebit, PDebit=@tmp
else
end;
或
set @TotalCr = (select max(TotalCredit) from mbs_headers);
If (@TotalCr = (select sum(PDebit) from mbs_details) and @TotalCr =! (select sum(PCredit) from mbs_details))
then exec TestSwapProc
else
end;
testswapproc只包含
UPDATE mbs_detailstest SET PCredit=@tmp:=PCredit, PCredit=PDebit, PDebit=@tmp
示例数据-表:详细信息
Name, Credit, Debit
Mike, 100, 20
Mike, 10, 0
表:标题
name, totalcredits, totaldebits
Mike, 20, 110
我需要切换details表以反映真实值,因为它有时会以错误的方式插入期望的结果:
表:详细信息
Name, Credits, Debits
Mike, 20, 100
Mike, 0, 10
标题表保持不变,因为它总是正确的
1条答案
按热度按时间tmb3ates1#
你可以这样做: