业务上需要,老范叫加一个拆单校验。规则是这样的:
个险渠道自动核保条件增加一条:
若同一投保人、同一被保险人、同样的保险计划,在一周内出现两单及以上,系统自动核保不通过,提示语言为: 疑似拆单,请核保师关注。
由于规则条件较多,刚工作的小姑娘显然搞不了啊。
之前由于契约归我做,所以稍微跟她讲了一下思路,oracle自带的列转行函数可以轻松地(bian tai de )实现一些转换。
—本单特征码
SELECT 1
FROM (SELECT to_char(WMSYS.WM_CONCAT(a.riskcode)) vv
FROM lcpol a
WHERE a.contno = ‘531010000045735’
and a.cvalidate > sysdate - 7
and not exists (select 1
from lccont k
where k.contno = a.contno
and k.appflag = ‘0’)) a
WHERE a.vv in
(
----近一周的特征码跟数量
SELECT a.vv num
FROM (SELECT a.contno, to_char(WMSYS.WM_CONCAT(a.riskcode)) vv
FROM lcpol a
WHERE 1 = 1
and not exists (select 1
from lccont k
where k.contno = a.contno
and k.appflag = '0')
and a.cvalidate > sysdate - 7
and a.uwflag not in ('1', '2', 'a')
and a.salechnl = '02'
GROUP BY a.contno) a
group by a.vv
having count(1) > 1 );
写完之后,其实思路应该是这样的,这个所谓的思路是根据逆向的一个结果反思出的。
其实大部分时间都是在特征码的统计上,于是写出了近一周的特征码跟数量这个sql。写完发现其实这个是保单无关的,也就是只需要知道哪些特征码是不合法的即可,然后让本单的特征码跟这些不合法的比较即可。
后续当然可以继续调优啦。比如这一周的特征码,我只关注与本次这个客户的,相信效率不再是问题,即使一个月内的保单也能轻松应付。
以上。