【发布时间】:2022-01-11 11:15:40
【问题描述】:
对于我的示例,我需要执行一个程序,计算所选批次在期望日期的余额。
如果输入的日期没有余额,它会查找并计算最后一个现有日期的余额。
我尝试过这样的事情:
select saldo_do, saldo_br
from
trr_extracts
where batch = 135 and dat_extr = '21.3.2019';
也试过了:
SELECT dat_extr, max(dat_extr)
from trr_extracts
where batch = 135
group by dat_extr;
SELECT IFNULL(dat_extr('21.3.2023'), max(dat_extr)
FROM trr_extracts;
问题是,如何编写只返回一个参数(saldo_do 或 saldo_br)并从给定批次中找到最后日期的语句。
解释:
saldo_do 是(正账户余额货币),而 saldo_br 是(负账户余额货币)。该帐户只能有一个。 (货币余额可以是正数或负数)。
如果我运行此代码:
select saldo_do, saldo_br
from
trr_extracts
where batch = 135 and dat_extr = '21.3.2019';
结果是:
此帐户的余额为正数。由于正平衡,它应该只打印saldo_do 而没有saldo_br。像这样。
如果是否定的,那么它应该只打印saldo_br。
现在,我只想打印一个结果。 肯定,如果帐户是肯定的。 Negative 如果帐户为负数。
下一个问题是:
如果在上例中输入的日期 ('21.3.2019') DOES NOT EXIST 对于给定的批次 (135),则语句 应该找到批次 135 的最后日期并使用该日期。
【问题讨论】:
-
minimal reproducible example 在询问 SQL 问题时是一个很好的开始。
-
您标记了 PLSQL,但使用了
IFNULL。请改用nvl(argument1, argument2)。您可能还需要argument1的子查询。