U8入库单后台查询处理 常用 SQL 语句(持续更新)
市場上常見的ERP軟件有用友、金蝶等…,此篇文章闡述用友U8和SQL SERVER后臺常用的的查詢
先來了解一下SQL SERVER 中用友U8中 “ 收 ”單據(jù)所對應(yīng)的表
“收”單據(jù)共性
- - U8中的“庫存管理”下的庫存單據(jù),’倉庫’、’單據(jù)日期’、’收發(fā)類別’ (比較重要的三個),它是單據(jù)呈現(xiàn)或者表達(dá)整張單據(jù)重要信息的唯一標(biāo)識。
- - 這些唯一標(biāo)識所對應(yīng)的就是單據(jù)表體中多行的單據(jù)體信息,通俗的來講單據(jù)頭就是SQL中的主表,單據(jù)體就是SQL中的子表 ,把主表和子表
通過兩張表相同的字段“ID”相互關(guān)聯(lián)在一起就是U8軟件中前臺所呈現(xiàn)的整張完整的單據(jù)。
2.“收”單據(jù)特性
- - 單據(jù)的活靈活現(xiàn):所有的“收”單據(jù)可以試用不同企業(yè)的共性以及通過單據(jù)的“格式設(shè)置”制定相應(yīng)的表體/表頭自定義項(xiàng)從而來針對不同企業(yè)的特性,所以每一個“收”單據(jù)都有不同的特性。
1)采購入庫單主表:最明顯的特性就是單據(jù)頭有客商條目
2)采購入庫單子表:顯示存貨信息,及對應(yīng)的數(shù)量,在采購入庫單和發(fā)票結(jié)算后顯示對應(yīng)的單價、金額、等…
①關(guān)聯(lián)SQL兩表語句
select * from RdRecord01 as rd left join RdRecords01 as rds ON rd.ID=rds.ID /*用兩表的ID進(jìn)行關(guān)聯(lián)*/ where rd.dDate /*單據(jù)日期*/ between '2016-01-01' and '2016-01-31' /*16年期間1月份單據(jù)所有信息*/②通過關(guān)聯(lián)“供應(yīng)商檔案”表,顯示客商編碼所對應(yīng)的客商名稱
ALTER TABLE RdRecord01 ADD cVenName NVARCHAR(100) /*在01表中添加一個名為‘cVenName’的字段*/ ———————————————————————————————————————————————————————————————————————————————— UPDATE RdRecord01 set cVenName =Ven.cVenName from Vendor AS Ven /*‘Vendor’(供應(yīng)商檔案表)*/ where RdRecord01.cVenCode =Ven.cVenCode /*將表‘Vendor’中的cVenName字段(供應(yīng)商名稱)根據(jù)RdRecord01表和Vendor表中相同的cVenCode返回對應(yīng)值/ - -邏輯與Excel表中 Lookup 函數(shù)相似,通俗的來講,通過RdRecord01表中字段cVenCode匹配Vendor表中的字段cVenCode,返回Vendor中cVenCode所對應(yīng)的 cVenName ———————————————————————————————————————————————————————————————————————————————— SELECT cVenName,cVenCode,* FROM RdRecord01 where dDate between '2016-01-01' and '2016-01-31'- 無論是關(guān)聯(lián)倉庫檔案表(Warehouse)、還是收發(fā)類別表(Rd_Style)都可以按照此語句進(jìn)行關(guān)聯(lián),因?yàn)樵诔鋈霂鞌?shù)據(jù)表中所呈現(xiàn)的數(shù)據(jù)都是編碼的形式顯示,光眼睛看無法確定編碼所對應(yīng)的名稱,所以會用到關(guān)聯(lián)字段啦~,而且出入庫表中都會有相應(yīng)的關(guān)聯(lián)的字段,比如主表與子表關(guān)聯(lián)都會有相同的字段,‘ID’或者’PBVID‘等等…
③查詢所有采購入庫單中根據(jù)供應(yīng)商匯總?cè)霂鞌?shù)量
SELECT rd.cVenCode,rd.cVenName,SUM(rds.iQuantity) AS 合計入庫量 from RdRecord01 rd LEFT JOIN rdrecords01 rds ON rd.ID=rds.ID GROUP BY rd.cVenCode,rd.cVenName /*匯總的依據(jù)有很多(詳細(xì)GROUP BY函數(shù)這里不再贅述)*/④刪除采購入庫單 (大批量刪除數(shù)據(jù)動作之前,有必要先做好備份)
delete from RdRecords01 rds where rds.ID in (select ID from RdRecord01 where dDate between '2016-01-01' and '2016-01-31') /*通過字段“ID”刪除主表所對應(yīng)子表記錄*/ ———————————————————————————————————————————————————————————————————————————————— delete from RdRecord01 where dDate between '2016-01-01' and '2016-01-31' /*刪除主表記錄*/ 小編在這里吃過不少虧,還提醒各位要先把要刪的記錄先查出來!先查出來!先查出來!在處理較大的數(shù)據(jù)量的時候小編都會先做備份,然后刪完相應(yīng)的記錄把刪除語句清除掉,誰知道一不小心就按錯了呢,到時候哭都來不及o(╥﹏╥)o,尤其是不帶where條件的,到時候就哭天喊地的補(bǔ)數(shù)據(jù)了,當(dāng)然如果對自己的語句有絕對的信心(忽略此條) ————————————————————————————————————————————————————————————————————————————————— delete from rdrecords01 where ID not in (select ID from RdRecord01) /*刪除的順序是先刪子表再刪主表,如果先把主表記錄刪除,子表記錄會有冗余,通過這個語句進(jìn)行清除*/ ————————————————————————————————————————————————————————————————————————————————— 拓展1:對于后期批量的數(shù)據(jù)處理,不一定刪除的是整張單據(jù),可能會存在刪除個別單據(jù)某一行,或者根據(jù)關(guān)聯(lián)的采購訂單或者采購發(fā)票去刪除對應(yīng)的采購入庫單, 這個小編在后期講到關(guān)聯(lián)單據(jù)數(shù)據(jù)處理以及發(fā)票,訂單的時候會講到。 —————————————————————————————————————————————————————————————————————————————————3)產(chǎn)成品入庫單主表:針對于本單位的生產(chǎn)入庫信息,
4)產(chǎn)成品入庫單子表:顯示存貨數(shù)量,并在每個月存貨核算成本分配以后會回寫存貨的單價和金額
5)其它入庫單主表:U8中其它出入庫單可以是拉式生成,也可能是通過審核‘調(diào)撥單’自動生成
6)其它入庫單子表:顯示存貨數(shù)量,單價金額通過存貨核算期末處理其它出庫單所對應(yīng)的倉庫,回寫到其它入庫單中(因?yàn)檎{(diào)撥單,先有出再有入)
查詢的語句參照上述’采購入庫’所對應(yīng)的語句
拓展2:小編相信如果您用U8產(chǎn)品,在這些單據(jù)的基礎(chǔ)上少不了,現(xiàn)存量,收發(fā)存匯總表,出入庫流水賬,出庫匯總,入庫匯總,銷售統(tǒng)計表等等一系列報表,這些報表各位可以根據(jù)單據(jù)試著用SQL語句在后臺呈現(xiàn)出來,具體在后期展示
下期更新 ‘出’單據(jù) 以及采購/銷售發(fā)票所關(guān)聯(lián)單據(jù)的數(shù)據(jù)處理
郵箱地址:nierlingg@163.com ;本文到此結(jié)束,后期還持續(xù)更新,喜歡溝通交流,文章寫的不得體的地方還請海涵,如有不足,還請指出
總結(jié)
以上是生活随笔為你收集整理的U8入库单后台查询处理 常用 SQL 语句(持续更新)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在win32下编译openssl
- 下一篇: 西部数码linux pdo_mysql,