來源:https://forums.opentext.com/forums/discussion/61542/compare-current-row-with-previous-row-value#latest
在雙灤等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網(wǎng)站設計、網(wǎng)站制作 網(wǎng)站設計制作按需開發(fā)網(wǎng)站,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,成都品牌網(wǎng)站建設,全網(wǎng)整合營銷推廣,成都外貿(mào)網(wǎng)站建設公司,雙灤網(wǎng)站建設費用合理。
Birt中想要實現(xiàn)組內(nèi)跨行計算一般要用SQL窗口函數(shù)或報表腳本去實現(xiàn),但代碼比較復雜,這種情況下可以用SPL來輔助報表工具。下面以例子來說明。
本例中有三個字段,其中SELLERID是分組字段,DAY是需要進行比較的字段,字段類型為日期時間型。需要設計一張分組表,SELLERID是分組字段,明細字段是DAY, AMOUNT以及計算列SHIFTTIME, SHIFTTIME中存放著DAY和本組上一條記錄中的DAY相差幾天。源數(shù)據(jù)如下:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
用集算器進行數(shù)據(jù)整理:
A | ||
1 | =connect("db").query("select ? SELLERID, DAY,AMOUNT,0 as SHIFTTIME? ? from SALES order by SELLERID, DAY") | 查詢數(shù)據(jù)庫,對SELLERID, ? DAY字段排序,多產(chǎn)生一列常數(shù)備用 |
2 | =A1.group(SELLERID).run(~.run(interval(DAY[-1],DAY):SHIFTTIME)) | 按SELLERID分組,并在每組數(shù)據(jù)中修改計算列SHIFTTIME |
3 | =A2.union() | 合并每組數(shù)據(jù) |
4 | return ? A3 | 將計算結(jié)果返回給報表工具。 |
將上邊SPL代碼保存為sales.dfx,然后引入到Birt報表中。Birt調(diào)用SPL請參考《BIRT調(diào)用SPL腳本》。
第一步:添加集算器JDBC數(shù)據(jù)源。
第二步:創(chuàng)建數(shù)據(jù)集,編輯Query Text。
第三步:創(chuàng)建報表,報表設計如下:
第四步:WEB 預覽,預覽結(jié)果如下: