您好,登錄后才能下訂單哦!
來源:https://forums.opentext.com/forums/discussion/61542/compare-current-row-with-previous-row-value#latest
Birt中想要實現組內跨行計算一般要用SQL窗口函數或報表腳本去實現,但代碼比較復雜,這種情況下可以用SPL來輔助報表工具。下面以例子來說明。
本例中有三個字段,其中SELLERID是分組字段,DAY是需要進行比較的字段,字段類型為日期時間型。需要設計一張分組表,SELLERID是分組字段,明細字段是DAY, AMOUNT以及計算列SHIFTTIME, SHIFTTIME中存放著DAY和本組上一條記錄中的DAY相差幾天。源數據如下:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
用集算器進行數據整理:
A | ||
1 | =connect("db").query("select ? SELLERID, DAY,AMOUNT,0 as SHIFTTIME? ? from SALES order by SELLERID, DAY") | 查詢數據庫,對SELLERID, ? DAY字段排序,多產生一列常數備用 |
2 | =A1.group(SELLERID).run(~.run(interval(DAY[-1],DAY):SHIFTTIME)) | 按SELLERID分組,并在每組數據中修改計算列SHIFTTIME |
3 | =A2.union() | 合并每組數據 |
4 | return ? A3 | 將計算結果返回給報表工具。 |
將上邊SPL代碼保存為sales.dfx,然后引入到Birt報表中。Birt調用SPL請參考《BIRT調用SPL腳本》。
第一步:添加集算器JDBC數據源。
第二步:創建數據集,編輯Query Text。
第三步:創建報表,報表設計如下:
第四步:WEB 預覽,預覽結果如下:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。