VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

sql 能一下计算出每日存库数吗?

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
wangydm



註冊時間: 2005-11-03
文章: 8


第 1 樓

發表發表於: 星期六 十月 30, 2010 8:56 am    文章主題: sql 能一下计算出每日存库数吗? 引言回覆

日期 货名 进 出 存
2010/9/1 A 100 10 90
2010/9/2 A 50 30 110
2010/9/3 A 60 30 140
2010/9/4 A 50 20 170
2010/9/5 A 10 10 170


上面是我的數據庫結構, 因記錄條數多, 如果用掃描的方式, 會需要很長時間?
計問用select語言能做得到嗎?
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 2 樓

發表發表於: 星期六 十月 30, 2010 10:24 am    文章主題: 引言回覆

select 日期,貨品,SUM(存) from table group by 日期,貨品 order by 日期 desc,貨品
_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
wangydm



註冊時間: 2005-11-03
文章: 8


第 3 樓

發表發表於: 星期六 十月 30, 2010 1:42 pm    文章主題: 引言回覆

谢谢楼上的回复,我没有表达清楚我的问题
我有一表结构如下

日期 货名 进 出
2010/9/1 A 100 10
2010/9/2 A 50 30
2010/9/3 A 60 30
2010/9/4 A 50 20
2010/9/5 A 10 10


2010/9/3 B 60 30
2010/9/4 B 50 20
2010/9/5 B 10 10




现在需要计算出每天的库存, 需要得到如下的结果

日期 货名 进 出 存
2010/9/1 A 100 10 90
2010/9/2 A 50 30 110
2010/9/3 A 60 30 140
2010/9/4 A 50 20 170
2010/9/5 A 10 10 170

2010/9/3 B 60 30 30
2010/9/4 B 50 20 60
2010/9/5 B 10 10 60
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 4 樓

發表發表於: 星期六 十月 30, 2010 3:22 pm    文章主題: 引言回覆

不是你的結果設計的有問題,
那就是我看不懂你的題目.


要獲得準確的結果,
一般會直接用銷貨單及進料單,利用 末存 = 前存+sum(進)-sum(銷),
而不會用帳冊結果找出每筆材料的最末筆更新記錄.

這是帳冊嗎?

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
ckp6250



註冊時間: 2004-07-30
文章: 1645


第 5 樓

發表發表於: 星期六 十月 30, 2010 7:25 pm    文章主題: 引言回覆

單純select語言做不到
要 Select + 自訂計算庫存函數,才可以
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
wangydm



註冊時間: 2005-11-03
文章: 8


第 6 樓

發表發表於: 星期一 十一月 01, 2010 2:15 pm    文章主題: 引言回覆

嗯, 我現在就是要用數據庫資料做一份帳冊,用來和手工帳對比.

因為數據庫中只有 進 ,出兩個字段, 我想要計算出每天的庫存出來



syntech 寫到:
不是你的結果設計的有問題,
那就是我看不懂你的題目.


要獲得準確的結果,
一般會直接用銷貨單及進料單,利用 末存 = 前存+sum(進)-sum(銷),
而不會用帳冊結果找出每筆材料的最末筆更新記錄.

這是帳冊嗎?
回頂端
檢視會員個人資料 發送私人訊息
ckp6250



註冊時間: 2004-07-30
文章: 1645


第 7 樓

發表發表於: 星期一 十一月 01, 2010 2:31 pm    文章主題: 引言回覆

大約會是這樣子
select 日期,货名,進,出,計算庫存() As 存 from xxx
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 8 樓

發表發表於: 星期一 十一月 01, 2010 3:05 pm    文章主題: 引言回覆

所以我才問你這是不是帳冊.
一般而言,出貨單或進料單數量只有一個,
不會有進出放在一起.
(不會有某一張單據又同時對A客戶出貨500個又同時表示由B廠商進貨600個)

會這樣做的只有會計傳票,會同時設計借方金額及貸方金額.
借: 500
    貸:500
而且也非同一筆紀錄同時有借貸兩種金額,
這一定會造成統計出問題.

如果拿借貸這種模式做出貨單或進料單,
真是頭殼壞掉.


但是帳冊就可以,因為要一眼就看出總進總出.


而且你的結果,台灣會稱為明細帳(流水帳),
2010/11/01 A 進:100 出:10  合計(前存+進-出): 120 (註:上月前存30+100-10)
2010/11/02 A 進:10  出:5  合計(前存+進-出): 125 (註:120+10-5)
2010/11/03 A 進:50  出:150 合計(前存+進-出): 25 (註:125+50-150)

收支總帳會像這樣:
A 前存:30 進:160 出:165 現存:25


如果你的結果是流水帳,
想要用單純的SQL命令是辦不到的,
因為今天的前存數量為前一天的末存數量,
有資料相依性

我必須承認我的T-SQL 或是其他DB SQL 語言學的不深. XD
無法用簡單的SQL 命令兜出結果. Orz

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
ckp6250



註冊時間: 2004-07-30
文章: 1645


第 9 樓

發表發表於: 星期一 十一月 01, 2010 8:49 pm    文章主題: 引言回覆

比較簡潔的做法
是利用內儲程式和自訂函數
不過,數十至上百行程式碼是跑不掉的啦
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
區榮熾



註冊時間: 2005-11-14
文章: 191


第 10 樓

發表發表於: 星期二 十一月 09, 2010 2:56 pm    文章主題: Re: sql 能一下计算出每日存库数吗? 引言回覆

wangydm 寫到:
日期 货名 进 出 存
2010/9/1 A 100 10 90
2010/9/2 A 50 30 110
2010/9/3 A 60 30 140
2010/9/4 A 50 20 170
2010/9/5 A 10 10 170


上面是我的數據庫結構, 因記錄條數多, 如果用掃描的方式, 會需要很長時間?
計問用select語言能做得到嗎?

試試看下面的例子,這能合你的意嗎?

Select 貨名, Sum(進) Total_in, Sum(出) Total_out, Sum(Sum(進)-Sum(出)) 存 From xxxx.dbf Where Between( date, date(始), Date(止)) Group By 貨名 Order By 貨名 Into Cursor zzzz
Brows
&&看後如果合意,就可以設計報表印出,計算期由日期始止作控制(如日,月,季,年等)
回頂端
檢視會員個人資料 發送私人訊息
foxy



註冊時間: 2007-08-16
文章: 258
來自: 泰國

第 11 樓

發表發表於: 星期日 十一月 21, 2010 4:23 pm    文章主題: 引言回覆

CREATE CURSOR mytbl( Code c(10), date d(8), qtyin n(10,0),qtyout n(10,0))
INDEX ON code TAG t1
INDEX ON date TAG t2

INSERT INTO mytbl values('001', DATE(2001,1,1),10,0)
INSERT INTO mytbl values('001', DATE(2001,1,2),10,0)
INSERT INTO mytbl values('002', DATE(2001,1,1),8,0)
INSERT INTO mytbl values('002', DATE(2001,1,2),0,1)
INSERT INTO mytbl values('001', DATE(2001,1,3),0,1)
INSERT INTO mytbl values('001', DATE(2001,1,4),0,2)
INSERT INTO mytbl values('002', DATE(2001,1,3),8,0)
INSERT INTO mytbl values('002', DATE(2001,1,4),0,2)

SELECT code,date,SUM(qtyin) as qtyin,SUM(qtyout) as qtyout;
FROM mytbl GROUP BY code,date;
into CURSOR a1 READWRITE

INDEX ON code TAG t1
INDEX ON date TAG t2

SELECT a.code,MAX(a.date) as date,b.qtyin as dayin,b.qtyout as dayout,SUM(a.qtyin) as runin,;
SUM(a.qtyout) as runout,SUM(a.qtyin-a.qtyout) as runbal;
from a1 as a;
inner join a1 as b;
on a.code=b.code and a.date<=b.date;
group BY a.code,b.date,b.qtyin,b.qtyout;
into CURSOR b1

BROWSE

&& runbal 就是每天下班時的庫存餘額

_________________
進銷存+生產製造+會計+員工薪資+CRM+POS零售+餐廳手機app+電商手機app+電商網站,物流系統. 正/簡體中文,英,日,泰,緬甸文. MS SQL Server + 前台 VFP + PHP 網站 + Flutter 手機 App, 都共享 MS SQL Server的資料. www.foxacc.com LINE: mike-lm
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站 MSN Messenger
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作