我有一个药品信息表,里面有一条药品,该药品有中心限价为5000,医院可以有自己的价格,如果一人在一次住院中:
用第一个该药品,医院价格为a,中心限价为b,报销比例为0.8,如果a>=b,则可以报销金额c为b,否则为a*0.8;
用第二个该药品,医院价格为a,中心限价为b,报销比例为0.8,如果医院价格大于b并且第一次的报销金额超过b,则第二次报销金额为b*(1-20%),
如果医院价格大于b,第一此报销金额小于b,则第二次报销金额为b,
如果医院价格小于b,则第二此报销金额为:a*0.8
用第三个该药品,医院价格为a,中心限价为b,报销比例为0.8,如果医院价格大于b并且前2次的报销金额都大于b,则第三次报销金额为b*(1-20%)(1-20%),
如果医院价格大于b并且前2次的报销金额中只有一次大于b,则,第三次报销金额为b*(1-20%)
如果医院价格大于b并且前2次的报销金额都小于b,则第三次报销金额为b,
如果医院价格小于b,则第三次报销金额为a*0.8
第四个.......以此类推,该怎么处理逻辑啊,有点混乱,请大家指导,用PL/SQL怎么写出来啊
用第一个该药品,医院价格为a,中心限价为b,报销比例为0.8,如果a>=b,则可以报销金额c为b,否则为a*0.8;
用第二个该药品,医院价格为a,中心限价为b,报销比例为0.8,如果医院价格大于b并且第一次的报销金额超过b,则第二次报销金额为b*(1-20%),
如果医院价格大于b,第一此报销金额小于b,则第二次报销金额为b,
如果医院价格小于b,则第二此报销金额为:a*0.8
用第三个该药品,医院价格为a,中心限价为b,报销比例为0.8,如果医院价格大于b并且前2次的报销金额都大于b,则第三次报销金额为b*(1-20%)(1-20%),
如果医院价格大于b并且前2次的报销金额中只有一次大于b,则,第三次报销金额为b*(1-20%)
如果医院价格大于b并且前2次的报销金额都小于b,则第三次报销金额为b,
如果医院价格小于b,则第三次报销金额为a*0.8
第四个.......以此类推,该怎么处理逻辑啊,有点混乱,请大家指导,用PL/SQL怎么写出来啊
解决方案 »
- 求一SQL语句
- join表中 count的sql该如何写
- 怎么安全可靠移动控制文件?
- vmware server client按power on出现error
- 删除用户没反应,强行结束后,再删除也不行.加 cascade也不行.其他用户也是一样.环境:AIX5.2,ORACLE 9i ,ERP TIPTOP
- 游标使用后几次后如何让它还是指向初始的值?
- 关于odbc设置连接oracle以及字符集问题
- 求一个SQL语句!(共同提高)
- 请教:存储过程要返回的一个参数数据的问题。
- 如何进入ORACLE的Enterprise Manager的Console的界面?
- Select * 为什么select a,b,c....低效?
- OracleDataAdapter如何填充实现2个父子表
报销比例为一个参数控制
用几个该药品是存在另一个处方信息表中的第1次报销金额,第二次报销金额都是在变量里存,系统不存,要根据使用药品数量循环:
我想用记录表的形式的变量储存报销金额,但不知道怎么设计,如rec_bxje[n].bxje n为第一次,第二次...
报销金额应该是多少?与第几次报销的计算有关;所以应该还要有另一个表,这个表存储计算倍率;我认为新加的表结构应该为:
tb(id int,less number(8,2),more number(8,2))
id为第几次计算
less为医院价格小于报销金额,用less值计算出应该报销金额
more为医院价格大于报销金额,用more值计算出应该报销金额
jrtc NUMBER(12,2), --特殊诊疗进入统筹金额
zfje NUMBER(12,2)); --特殊诊疗自付金额
TYPE type_tszl IS TABLE OF rec_tszl index by binary_integer;
type_tscl type_tszl;
AKC225 为医院价额,AKA068 为中心限价
FOR i IN 1..N_AKC226 --数量
LOOP
IF i = 1 THEN
IF N_AKC225 > N_AKA068 THEN
type_tscl(i).bxje := N_AKA068; --报销金额
type_tscl(i).zfje := N_AKC225 - N_AKA068;--自付金额
ELSE
type_tscl(i).jrtc := N_AKC225 * (1 - N_YLZYZFBL);
type_tscl(i).zfje := N_AKC228 * N_YLZYZFBL;
END IF;
END IF;
IF i = 2 THEN
IF N_AKC225 > N_AKA068 AND type_tscl(i-1) > N_AKA068 THEN
type_tscl(i).bxje := N_AKA068 * (1 - 20%); --报销金额
type_tscl(i).zfje := N_AKC225 - N_AKA068 * (1 - 20%);--自付金额
ELSIF N_AKC225 > N_AKA068 AND type_tscl(i-1) < N_AKA068 THEN
type_tscl(i).jrtc := N_AKA068;
type_tscl(i).zfje := N_AKC225 - N_AKA068;
ELSE
type_tscl(i).jrtc := N_AKC225 * (1 - N_YLZYZFBL);
type_tscl(i).zfje := N_AKC228 * N_YLZYZFBL;
END IF;
END IF;
END LOOP;
写不下去了,如果用10个怎么处理啊,还要用阶乘,写不出来了