溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表

發(fā)布時(shí)間:2021-12-09 09:49:54 來源:億速云 閱讀:143 作者:柒染 欄目:大數(shù)據(jù)

本篇文章給大家分享的是有關(guān)如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

前言

下面我們就來看看怎么用存儲(chǔ)過程寫出客戶想要實(shí)現(xiàn)的報(bào)表。

需求報(bào)表樣式

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表

上面的報(bào)表可以看出,客戶要的是一個(gè)橫向列表,對(duì)應(yīng)的商戶周租金與周銷售的對(duì)比,一般來說我們從數(shù)據(jù)庫里查詢橫向報(bào)表非常的麻煩,還好這個(gè)是周的報(bào)表,所以我們就可以固定表列,最終計(jì)算出我們的數(shù)據(jù),當(dāng)然不能同這個(gè)EXCEL里完全一樣,但是也基本實(shí)現(xiàn)的客戶的需求。

解決思路

  1. 首先根據(jù)客戶要求的報(bào)表我們先創(chuàng)建一個(gè)臨時(shí)的中間表,用于處理橫向數(shù)據(jù)問題。

  2. 根據(jù)客戶輸入的一個(gè)日期參數(shù),我們計(jì)算出輸入日期所對(duì)應(yīng)的周的開始日期和結(jié)束日期。

  3. 臨時(shí)表中第一行插入我們所要查詢的日期,用于判識(shí),因?yàn)閳?bào)表的列不能動(dòng)態(tài)修改日期,我們只能用周一周二等方式顯示,所以這樣就不容易判斷出報(bào)表查詢的對(duì)應(yīng)日期。

  4. 然后先在中間表里加入所有的店鋪基本信息。

  5. 計(jì)算對(duì)應(yīng)商戶的周租金。

  6. 更新商戶這周中每天的銷售。

  7. 計(jì)算中間表中的數(shù)據(jù),坪效,合計(jì),租售比等。

  8. 輸出顯示游標(biāo)。

代碼實(shí)現(xiàn)

1.首先根據(jù)客戶要求的報(bào)表我們先創(chuàng)建一個(gè)臨時(shí)的中間表,用于處理橫向數(shù)據(jù)問題。

中間表的用法可以看《Oracle的臨時(shí)表的使用》這一篇中有詳細(xì)講解。

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表

上面為臨時(shí)表的創(chuàng)建,列都說的比較清楚了。


然后開始寫存儲(chǔ)過程,我們的存儲(chǔ)過程名定義為sRpt_shpWeekXsRent,其中輸入?yún)?shù)只有一個(gè)日期,輸出參數(shù)為游標(biāo)

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表

2.根據(jù)客戶輸入的一個(gè)日期參數(shù),我們計(jì)算出輸入日期所對(duì)應(yīng)的周的開始日期和結(jié)束日期。

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表


3.臨時(shí)表中第一行插入我們所要查詢的日期,用于判識(shí),因?yàn)閳?bào)表的列不能動(dòng)態(tài)修改日期,我們只能用周一周二等方式顯示,所以這樣就不容易判斷出報(bào)表查詢的對(duì)應(yīng)日期。

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表


4.然后先在中間表里加入所有的店鋪基本信息。

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表

注意上面的圖和這張圖中的1,2是標(biāo)紅框的,這是為了最后我們查詢的時(shí)候用itemno進(jìn)行排序,這樣開始日期到結(jié)束日期肯定會(huì)顯示在第一行了。


5.計(jì)算對(duì)應(yīng)商戶的周租金。

周租金我們用的計(jì)算方法是能過數(shù)據(jù)表里獲取到對(duì)應(yīng)的開始結(jié)束日期的租金,除去開始到結(jié)束日期的天數(shù),再乘7為一周。

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表


6.更新商戶這周中每天的銷售

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表

先通過靜態(tài)游標(biāo)獲取到地應(yīng)的分割表,生成動(dòng)態(tài)的查詢銷售的語句

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表

然后再根據(jù)銷售關(guān)聯(lián)我們需要的信息完善原來的動(dòng)態(tài)SQL語句。

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表

動(dòng)態(tài)生成游標(biāo)數(shù)據(jù),然后判斷對(duì)應(yīng)的星期幾用于修改對(duì)應(yīng)周幾列的銷售數(shù)據(jù)。


7.計(jì)算中間表中的數(shù)據(jù),坪效,合計(jì),租售比等。

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表

首先計(jì)算每天的坪效數(shù)。

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表

然后更新周合計(jì)。

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表

最后更新租售比。


8.輸出顯示游標(biāo)。

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表


這樣我們的存儲(chǔ)過程就寫完了,下面我們?cè)谲浖锇褕?bào)表設(shè)置進(jìn)去,然后看看效果

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表

查詢的最后結(jié)果

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表

如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表


以上就是如何進(jìn)行Oracel存儲(chǔ)過程寫報(bào)表,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI