在wabacus框架中實現交叉報表

<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>
相關文章
相關標籤/搜索