 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
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. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
 |
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. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
 |
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. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
 |
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 |
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|