在DW Painter中获得某字段的值
我有个DW,得到的值如下所示:
sio ID value
B 107 300
B 103 500
S 109 200
S 106 400
如果我在painter中,通过表达式max( if( sio = 'B', value, 0 ) for all )可以得到最大的value值是500,现在,我想通过500找到它对应的ID值103,怎么办?不能在代码中写,必须在DW Painter中用DW Painter的函数。
还有一个问题:用上面的DW例子.我写max( if( sio = 'B', value, 0 ) for all )可以得到最大值500,但是,如果我写min( if( sio = 'B', value, 0 ) for all )却得到0,有什么办法得到300?
谢谢先!
问题点数:0、回复次数:10Top
1 楼PHizingHelen(PHizing)回复于 2004-12-03 16:26:18 得分 0
我自己顶一下Top
2 楼lzp_lrp(lzp)回复于 2004-12-03 18:58:59 得分 0
第一个问题,max( if (value = 500, id, 0) for all)即可
第二个问题,min( if (sio = 'B', value, 999999) for all)即可Top
3 楼progrose(编程小子)回复于 2004-12-03 20:38:26 得分 0
算不出最小值是因为min( if( sio = 'B', value, 0 ) for all )的0
Top
4 楼progrose(编程小子)回复于 2004-12-03 20:48:57 得分 0
取行数, 在pb前台用Find函数Top
5 楼renwanly(★★★★)回复于 2004-12-06 14:04:02 得分 0
第一个问题,max(if(value=max(if(sio='B',value,0) for all) ,id,0)for all)
第二个问题,min( if (sio = 'B', value, 99999999) for all)Top
6 楼renwanly(★★★★)回复于 2004-12-06 14:10:24 得分 0
不好意思,应该是这个样子
第一个问题,计算列 c1表达式为 max(if(sio='B',value,0) for all)
计算列c2表达式为if(value=c1,id,0)
第二个问题,min( if (sio = 'B', value, 99999999) for all)Top
7 楼PHizingHelen(PHizing)回复于 2004-12-06 17:11:16 得分 0
谢谢各位!
第二个问题已经搞定了,但是第一个还是不行。Top
8 楼PHizingHelen(PHizing)回复于 2004-12-09 17:54:44 得分 0
各位,我一直没解决啊Top
9 楼luotitan(泰坦)回复于 2004-12-09 18:58:36 得分 0
if(value=max( if( sio = 'B', value, 0 ) for all ),id,0)Top
10 楼balloonman2002()回复于 2004-12-23 16:50:57 得分 0
第一个问题直接写画板函数比较困难,我有两个建议:
方法一:在DETAIL区域建一个计算域叫做co_1,表达式为:
if(value = max( if( sio = 'B', value, 0 ) for all ) and sio = 'B',id,0)
然后在SUMMARY区域建一个计算域叫co_2,表达式为:max(co_1)即可
方法二:虽然直接写画板函数比较困难,但是写在函数里比较方便,可以建一个全局函数称:gf_xxx()里面去获取最大值所在行,然后计算域中表达式写:gf_xxx()即可
Top




