進銷存開發的問題 |
答題得分者是:st33chen
|
littlecheng
一般會員 發表:9 回覆:6 積分:3 註冊:2008-07-05 發送簡訊給我 |
在開發進銷存系統的時候遭遇到一個問題,要在指定的一段時間區間求出一個資料表,是關係商品的數量統計結果: 【期初數】、【期間進貨數】、【期間銷貨數】、【期末數】 比如說user輸入了:080901-080930,那麼就要得到如下資料 【期初數】:080831結束營業時候該商品剩下多少數量 【期間進貨數】:080901-080930之間進貨的總數量 【期間銷貨數】:080901-080930之間銷貨的總數量 【期末數】:到了080930,該商品還剩多少數量 資料表格有三 二、進貨資料檔 三、銷貨資料檔 要求得這樣的結果,好像單純的select難以達成,小弟在此懇請各位先進們指導了。 編輯記錄
littlecheng 重新編輯於 2008-09-29 19:37:30, 註解 無‧
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
以個人經驗, 這種情形要用 join 來處理的話常有沒想到的情況發生(例如 proda 無期初值, prodb 無進貨, prodc 無銷貨等等)
所以大都以 union all 來處理, 效率可能不好, 但比較不會漏東漏西, 參考一下 ( 假設沒有期初檔, 期初值由進貨-銷貨算出 ), select prod_id, sum(bgnqty) 期初, sum(buyqty) 進貨, sum(selqty) 銷貨, sum(bgnqty) sum(buyqty) - sum(selqty) 期末 from ( -- 期初 select prod_id, sum(buyqty - selqty) bgnqty, 0 buyqty, 0 selqty from ( select prod_id, buyqty, 0 selqty from table_buy where tran_date<'20080901' union all select prod_id, 0, selqty from table_sel where tran_date<'20080901' ) group by prod_id union all -- 進貨 select prod_id, 0 bgnqty, buyqty, 0 selqty from table_buy where tran_date between '20080901' and '20080930' union all -- 銷貨 select prod_id, 0 bgnqty, 0 buyqty, selqty from table_sel where tran_date between '20080901' and '20080930' ) group by prod_id ------------------------------------------------------------ 如果有一個完整的基本檔(商品資料檔), 也可以 基本檔 為主, 其餘的 left join 進來 select prod_id, bgnqty 期初, buyqty 進貨, selqty 銷貨, bgnqty buyqty - selqty 期末 from table_prod, ( -- 期初 select prod_id, sum(buyqty - selqty) bgnqty from ( select prod_id, buyqty, 0 selqty from table_buy where tran_date<'20080901' union all select prod_id, 0, selqty from table_sel where tran_date<'20080901' ) group by prod_id ) table_bgn, ( -- 進貨 select prod_id, sum(buyqty) buyqty from table_buy where tran_date between '20080901' and '20080930' group by prod_id ) table_buy, ( -- 銷貨 select prod_id, sum(selqty) selqty from table_sel where tran_date between '20080901' and '20080930' group by prod_id ) table_sel where table_prod.prod_id = table_bgn.prod_id( ) and table_prod.prod_id = table_buy.prod_id( ) and table_prod.prod_id = table_sel.prod_id( ) ===================引 用 littlecheng 文 章=================== 在開發進銷存系統的時候遭遇到一個問題,要在指定的一段時間區間求出一個資料表,是關係商品的數量統計結果: 【期初數】、【期間進貨數】、【期間銷貨數】、【期末數】 比如說user輸入了:080901-080930,那麼就要得到如下資料 【期初數】:080831結束營業時候該商品剩下多少數量 【期間進貨數】:080901-080930之間進貨的總數量 【期間銷貨數】:080901-080930之間銷貨的總數量 【期末數】:到了080930,該商品還剩多少數量 資料表格有三 二、進貨資料檔 三、銷貨資料檔 要求得這樣的結果,好像單純的select難以達成,小弟在此懇請各位先進們指導了。
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
littlecheng
一般會員 發表:9 回覆:6 積分:3 註冊:2008-07-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |