script="wd_nBidPrice1*0.1 "
for(n in 2..10){
script+="+ wd_nBidPrice"+ n + "*"+n\10
}
parseExpr(script)
可以使用binaryExpr和unifiedExpr实现以上的功能
n=10 colNames=`wd_nBidPrice+string(1..n) weights=1..n\10 weights_ = array(ANY, size(weights)).fill!(1..size(weights)-1, weights) selects = sqlColAlias(unifiedExpr(binaryExpr(sqlCol(colNames), weights_, *), take(+, size(weights)-1)), "weightedSum"); sql(selects, tb);
结果如下:
< select (wd_nBidPrice1 * 0.1) + (wd_nBidPrice2 * 0.2) + (wd_nBidPrice3 * 0.3) + (wd_nBidPrice4 * 0.4) + (wd_nBidPrice5 * 0.5) + (wd_nBidPrice6 * 0.6) + (wd_nBidPrice7 * 0.7) + (wd_nBidPrice8 * 0.8) + (wd_nBidPrice9 * 0.9) + (wd_nBidPrice10 * 1) as weightedSum from tb30d27206e77f0000 >