<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>