hur.cn - 华软网

 热门搜索

關於dw中的computed object的奇怪問題,百思不得其解!請大家幫忙,在線等待!

  作者:未知    来源:网络    更新时间:2018/10/12
我在dw中數據一個計算字段a(computed object)放在detail區中,然後又做一個計算字段b在summary區中,其中b的expression屬性為sum(a for all ),然後我又在dw的filter屬性中寫上別外一個計算字段c<>0作為過濾條件,結果發現b所获得的值猎奇怪,並不是正確的值。我用的pb版本為pb6.0.不過這種機率出現的不是太大,因為我的這個dw的計算字段還有其它的,另外做sum获得的值還是正確!恰恰就b的值不正確!不知道為什麼?謝謝大家幫我分析一下!
------华软网友回答------
a的表达式?
------华软网友回复------
a 的表達式為某二列,是做個判斷,if (left( upper(ps051w_ps_prdtcode) ,1)='P', 列名1,列名2),現在真的不清楚computed object 的處理機制是怎麼樣?為什麼會出現的值猎奇怪呢?之前也有遇到過這樣的現象,就是我給某列賦值後,然後用computed object做個加總,結果获得的值卻有好多位小數!可我給此列賦的值卻是保留2位小數,而且获得的最終結果也不對!因為我在dw的for next中再次获得此列的值後用腳本來實現加總,結果發現這加總與computed object做的加總完全不一樣,現在真的對computed object失去信心啦,在線期待大家的幫忙!
------华软网友回复------
filter是先把所有数据掏出来,然后再根据filter举行过滤,不知道是否是和这个有关
------华软网友回复------
我预计是由精度误差引起的。
------华软网友回复------
也可能是精度的问题,由于Numeric和double所表示的数据精度上有差异

如果是精度问题能够加Round()来解决,

然则对if (left( upper(ps051w_ps_prdtcode) ,1)='P', 列名1,列名2)列的求和,能够试一下直接写成sum( if (left( upper(ps051w_ps_prdtcode) ,1)='P', 列名1,列名2) for all )试试
------华软网友回复------
嗯,好的,謝謝大家的熱情幫忙!      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。