请教各位大哥
今天帮人家写一个报表程序,其中一条要求把按时间统计普通医保和统筹医保,而区分是普通医保还是统筹医保是一个16位字符串,例如('8823181282228222'),如果是8则是统筹医保,其余的就是普通医保,如何可以正确统计。
[解决办法]
string ls_str = '8823181282228222'
ls_str = mid(ls_str,8,1)
可在dw增加两虚拟列T_1,T_2
下面可用循环
if ls_str = '8' then
统筹医保
set T_1 = 1
else
普通医保
set T_2 = 1
end if
计算这两字段
还有一种就是用sql语句
以oracle为例
select
sum(case when substr(字段,8,1) = '8' then 1 else 0 end) as T_1, //统筹医保
sum(case when substr(字段,8,1) <> '8' then 1 else 0 end) as T_2 //普通医保
from dual;
[解决办法]