我有以下代码来显示我在存储过程中“尝试”完成的任务:
select * from
(
select to_char(sum(aa.amount))
from additional_amount aa, status st
where aa.int_tran_id = st.int_tran_id
and st.stage in ('ACHPayment_Confirmed')
and aa.entry_timestamp > (
select to_date(trunc(last_day(add_months(sysdate,-1))+1), 'DD-MON-RR') AS "day 1"
from dual
)
)
UNION ALL
(
select distinct it.debit_acct as "debit_accounts"
from internal_transactions it
where it.debit_acct IN ( select texe_cnasupro
from service.kndtexe, service.kndtctc
where texe_cncclipu = tctc_cncclipu
and tctc_cntipcli = 'C'
)
)
union all
(select distinct it.credit_acct as "credit_account"
from internal_transactions it
where it.credit_acct IN (select texe_cnasupro
from service.kndtexe, service.kndtctc
where texe_cncclipu = tctc_cncclipu
and tctc_cntipcli = 'C'
)
)
;
输出:
TO_CHAR(SUM(AA.AMOUNT))
----------------------------------------
130250292.22
6710654504
0000050334
2535814905
0007049560
5 rows selected
输出的第一行是我在SP中需要的输出,基于以下两个查询,我猜测需要对顶部select语句进行子查询。
顶部选择是选择具有连接的表与另一个表进行过滤的数量之和(输出: 130250292.22 )。
第二个和第三个选择实际上是检查internal_transactions表中的帐户是否已注册服务db中的相应两个表,这两个表是同一服务器上的不同db(由同一应用程序拥有)。
“service”db中的表没有与第一个select中相同的公共主键,这些主键是针对同一个数据库的。
感谢您的帮助!
答案 0 :(得分:0)
我不明白你的问题,但我知道你可以简化这一点:
to_date(trunc(last_day(add_months(sysdate,-1))+1), 'DD-MON-RR') AS "day 1"
到这个
trunc (sysdate, 'mm')
并且您不需要来自DUAL的SELECT也可以这样做。
and aa.entry_timestamp > trunc (sysdate, 'mm')