成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Birt如何實(shí)現(xiàn)不規(guī)則月份統(tǒng)計(jì)

集算器實(shí)現(xiàn) Birt 等報(bào)表工具中不規(guī)則月份統(tǒng)計(jì)

專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)招遠(yuǎn)免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

????業(yè)務(wù)報(bào)表中,常常需要基于時(shí)間段進(jìn)行分組統(tǒng)計(jì),特別是按月份分組統(tǒng)計(jì)。一般情況如果按自然月就簡(jiǎn)單了,但有時(shí)候也會(huì)需要按不規(guī)則月份來(lái)分組。例如,某企業(yè)從 1 月 16 日開(kāi)始實(shí)行某種特殊的價(jià)格策略或營(yíng)銷(xiāo)活動(dòng),因此以后都想以每月 16 號(hào)為界來(lái)統(tǒng)計(jì)產(chǎn)品銷(xiāo)售情況。這里所謂不規(guī)則月份就是指: 如果起始時(shí)間是 2013-01-16,則將 2013-01-16 到 2013-02-15 作為一組,將 2013-02-16 到 2013-03-15 作為一組。更特別的,如果起始時(shí)間是 2013-01-31,則可能要求將 2013-01-31 到 2013-02-27 作為一組,而將 2013-02-28 到 2013-03-30 作為一組,也就是“從每月最后一天”開(kāi)始分組。

????怎么樣?小伙伴們是不是有點(diǎn)傻眼了?對(duì)于 Birt 等報(bào)表工具,一般都會(huì)提供按自然月分組的表達(dá)式,但也卻都難以應(yīng)對(duì)這種不規(guī)則月份分組的表達(dá)式。如果要解決這個(gè)問(wèn)題,往往需要編寫(xiě)程序?qū)崿F(xiàn)自定義報(bào)表數(shù)據(jù)集,而在程序中按這種規(guī)則進(jìn)行分組,不但編程工作量不小,更重要的是基本無(wú)法通用。

????現(xiàn)在好了,如果在報(bào)表工具中引入集算器,解決這個(gè)問(wèn)題就易如反掌了。下面我們就以 Birt 報(bào)表工具為例,講解一下實(shí)現(xiàn)的過(guò)程。對(duì)其它報(bào)表工具來(lái)說(shuō),也基本大同小異。

????在本例中,要統(tǒng)計(jì)企業(yè)從 2013-01-16 日開(kāi)始到 2013-08-15 結(jié)束,每個(gè)月的銷(xiāo)售總額。數(shù)據(jù)表 salesall 中原始數(shù)據(jù)如下:

Birt 如何實(shí)現(xiàn)不規(guī)則月份統(tǒng)計(jì)

最后需要得到如下圖所示的目標(biāo)表樣:

Birt 如何實(shí)現(xiàn)不規(guī)則月份統(tǒng)計(jì)

?

我們直接來(lái)看集算器解決這個(gè)問(wèn)題的 SPL 代碼:


AB
1=connect("demo")
2=A1.query("select ? OrderID,Amount,OrderDate from salesall where OrderDate>=?? and OrderDate<? order by ? OrderDate",startDate,endDate)
3=interval@m(startDate,endDate)=startDate|A3.(elapse@m(startDate,~))
4=A2.group(B3.pseg(OrderDate);round(~.sum(Amount),2),B3(#))
5=A4.new(#:Number,#2:TotalAmount,#3:StartDate)
6>A1.close()
7return A5

A1?? 連接數(shù)據(jù)庫(kù)

A2?? 從數(shù)據(jù)庫(kù)訂單表中查出統(tǒng)計(jì)開(kāi)始日期到結(jié)束日期之間的訂單數(shù)據(jù),startDate 和 endDate 是日期參數(shù)。

A3?? 根據(jù)起止時(shí)間算出月份間隔,比如 2013-01-16 和 2013-08-15 間隔 7 個(gè)月。

B3?? 根據(jù)起始時(shí)間和日期間隔算出不規(guī)則月份的開(kāi)始日期,并將起始時(shí)間插入第 1 位。“|”表示合并,“~”表示集合中的當(dāng)前成員,即數(shù)字 1 到 7,結(jié)合不同的選項(xiàng),elapse 函數(shù)可以正確計(jì)算各種不規(guī)則月份的情況。

A4?? 按 B3 區(qū)間對(duì) A2 分組,統(tǒng)計(jì)出不規(guī)則月份的銷(xiāo)售額,保留兩位小數(shù),并將 B3 作為最后一列。函數(shù) pseg 可返回參數(shù),也就是訂購(gòu)日期所在的區(qū)間號(hào)。~.sum(Amount)中的~表示分組后的當(dāng)前組。# 表示 A2 當(dāng)前組號(hào)。

A5?? 取出 A4 的組號(hào)作為 Number,第 2 列為 TotalAmount,第 3 列為分組的 StartDate,生成新的結(jié)果序表。

A6?? 關(guān)閉數(shù)據(jù)庫(kù)

A7?? 將 A5 作為數(shù)據(jù)集返回給報(bào)表工具。

?

將集算器 SPL 代碼存為 orders.dfx 文件,然后引入到 Birt 報(bào)表中。如何引入請(qǐng)參看乾學(xué)院文章《BIRT 調(diào)用 SPL 腳本》。

在 BIRT 中設(shè)計(jì)簡(jiǎn)單的 list 表如下:

Birt 如何實(shí)現(xiàn)不規(guī)則月份統(tǒng)計(jì)

?

報(bào)表調(diào)用集算器的方法和調(diào)用存儲(chǔ)過(guò)程完全一樣,比如在 BIRT 的存儲(chǔ)過(guò)程數(shù)據(jù)集中可以用 call orders(?,?) 來(lái)調(diào)用。輸入開(kāi)始日期參數(shù) 2013-01-16、結(jié)束日期參數(shù) 2013-08-15 后,預(yù)覽報(bào)表就可以看到要求的目標(biāo)表樣了。

文章題目:Birt如何實(shí)現(xiàn)不規(guī)則月份統(tǒng)計(jì)
文章位置:http://jinyejixie.com/article26/iieocg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、外貿(mào)建站、軟件開(kāi)發(fā)、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
额济纳旗| 姜堰市| 平阳县| 丹江口市| 哈尔滨市| 油尖旺区| 丰顺县| 连南| 汪清县| 阳新县| 宁强县| 梁山县| 西安市| 宜川县| 石家庄市| 通州市| 锡林浩特市| 南昌县| 南川市| 蛟河市| 苏尼特左旗| 九江县| 竹北市| 灵山县| 长兴县| 乌苏市| 利津县| 大港区| 阿鲁科尔沁旗| 颍上县| 大荔县| 乐至县| 宁安市| 江陵县| 亚东县| 临朐县| 合作市| 周宁县| 砀山县| 荆门市| 渭源县|