首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

大哥

2012-12-30 
请教各位大哥今天帮人家写一个报表程序,其中一条要求把按时间统计普通医保和统筹医保,而区分是普通医保还

请教各位大哥
今天帮人家写一个报表程序,其中一条要求把按时间统计普通医保和统筹医保,而区分是普通医保还是统筹医保是一个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;

[解决办法]

引用:
按照你的方法建立了虚拟列,可以显示出该病人是普通病人还是统筹病人,但如何筛选。数据库为sql2005

如果你加虚拟列,在summary区加两个计算列sum这两个字段,
其实用sql语句实现最好的了,你查一下sql2005的字符截取函数,把substr替换掉就行了

热点排行