1 回答
TA贡献2011条经验 获得超2个赞
类似这样的东西应该有效(您可以在子查询中更改惩罚计算):
我假设只有当两者都存在并且存在记录时,才需要计算罚款。如果此假设不正确,并且您需要计算惩罚(如果存在任何一条或记录),则可以从下面的查询中删除 。PRI
INT
PRI
INT
having count(*) = 2
select LOANNO, DUEDT, DUECD, STARTDT, ENDDT, DUEAMT, DUEPD
from
(
SELECT LOANNO, DUEDT, DUECD, STARTDT, ENDDT, DUEAMT, DUEPD
, case
when DUECD = 'PRI' then 1
when DUECD = 'INT' then 2
else 10
end ord
FROM LLDUEDET
WHERE DUEAMT != DUEPD
union all
select pc.LOANNO, pc.DUEDT, pc.DUECD, pc.STARTDT, pc.ENDDT, pc.DUEAMT, coalesce(pa.DUEPD, 0.0) DUEPD
,3 ord
from (
select LOANNO, DUEDT, 'PEN' DUECD, STARTDT, ENDDT, ((SUM(DUEAMT)-SUM(DUEPD)) * 30) * .1 DUEAMT
from LLDUEDET
WHERE DUEAMT != DUEPD
and DUECD in ('PRI', 'INT')
group by LOANNO, DUEDT, STARTDT, ENDDT
having count(*) = 2
) pc
left join (
select LOANNO, DUEDT, SUM(DUEPD) DUEPD
from LLDUEDET
where DUECD = 'PEN'
group by LOANNO, DUEDT
) pa on pa.loanno = pc.loanno and pa.duedt = pc.duedt
) s
order by LOANNO, DUEDT, ord
- 1 回答
- 0 关注
- 139 浏览
添加回答
举报