十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
BIRT中如何根據(jù)參數(shù)實(shí)現(xiàn)動(dòng)態(tài)日期分組,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
站在用戶的角度思考問題,與客戶深入溝通,找到華容網(wǎng)站設(shè)計(jì)與華容網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋華容地區(qū)。
BIRT一般擅長(zhǎng)處理規(guī)則一致的數(shù)據(jù),若條件不一致的動(dòng)態(tài)運(yùn)算在報(bào)表中是很難實(shí)現(xiàn)的。常規(guī)辦法是創(chuàng)建scripted data sources, 在該腳本源上自行處理業(yè)務(wù)邏輯把數(shù)據(jù)準(zhǔn)備好,然后直接傳給BIRT展現(xiàn)。但SQL或scripted data sources的方式,代碼寫起來非常麻煩,而且工作量很大。
比如要處理這么個(gè)場(chǎng)景:按照開始日期、結(jié)束日期統(tǒng)計(jì)一段時(shí)間內(nèi)訂單,但要根據(jù)起止日期的跨度長(zhǎng)短實(shí)現(xiàn)按天、按周、按月、按年動(dòng)態(tài)分組顯示結(jié)果。查詢流程如下圖所示:
建議使用集算器,其豐富的集合運(yùn)算可以方便地完成這類計(jì)算和邏輯判斷,比Java寫的代碼要短,比存儲(chǔ)過程寫起來更簡(jiǎn)單,比如類似的計(jì)算在集算器里可以這樣寫:
A | B | |
1 | =[] | |
2 | =demo.query@x("select ORDERID,ORDERDATE,ORDERAMOUNT from ORDERS where ORDERDATE>=? and ORDERDATE<=?",startDate,endDate) | |
3 | =interval(startDate,endDate) | |
4 | if A3>365 | >A1=startDate|A3.(elapse@y(startDate,~)) |
5 | else if A3>30 | >A1=startDate|A3.(elapse@m(startDate,~)) |
6 | else if A3>15 | >A1=startDate|A3.(elapse(startDate,7*~)) |
7 | else | >A1=startDate|A3.(elapse(startDate,~)) |
8 | =A2.group(A1.pseg(ORDERDATE);~.count(ORDERID):TotalOrder,round(~.sum(ORDERAMOUNT),2):TotalOrderAmount,A1(#):BeginDate) | |
9 | =A8.new(BeginDate:BeginDate,#2:TotalOrder,#3:TotalOrderAmount) | |
10 | return A9 |
其中startDate,endDate為報(bào)表起止日期參數(shù)。
集算器提供了JDBC驅(qū)動(dòng),可以很方便的與BIRT等報(bào)表工具集成, BIRT調(diào)用SPL腳本有使用和獲得它的方法。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。