<col column="param_name" staticondition=
"param_name='#data#'" dataset="e_yc_history">
<statistic id="static1" type="sum" column="param_value" valuestyleproperty="align='center'"></statistic>
<format><!-- 对动态表头数据进行格式化 -->
<imports>
<import>java.util.*</import>
</imports>
<value>
<![CDATA[
if(mDynamicColData!=null&&mDynamicColData.size()>0)
{
Iterator itKeys=mDynamicColData.keySet().iterator();
while(itKeys.hasNext())
{
String key = (String)itKeys.next();
String value = (String)mDynamicColData.get(key);
if(value!=null&&!value.trim().equals(""))
mDynamicColData.put(key,value);
}
}
]]>
</value>
</format>
</col>
交叉报表在查询的时候要注意,若是动态列是汉字或者是字符串的话要在把#data#用单引号括起来,这是由于框架在拼凑sql 语句的时候若是是数字的话不会影响的,但若是是汉字或者字符串的话就会出错的。下面看个例子:
动态列的SQL语句是:select guid,sum(case when param_name='温度' then param_value end ) as column_10000 from tb; 就是找出动态列是温度的值,若是在#data#前面不加‘’单引号的话就会变成select guid,sum(case when param_name=温度 then param_value end ) as column_10000 from tb;因此就会出错的。
注:上面的<statistic>和<format>标签都是针对<col>标签的,因此要放在<col>标签里面,也就是 <col> <statistic></statistic> <format></format>. </col>