Chinaunix首页 | 论坛 | 博客
  • 博客访问: 407477
  • 博文数量: 66
  • 博客积分: 1416
  • 博客等级: 上尉
  • 技术积分: 922
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-16 10:37
个人简介

高級Oracle DBA,善長Linux系統維運以及Oracle數據庫管理,開發,調優. 具有多年PL/SQL開發經驗.

文章分类

全部博文(66)

文章存档

2015年(9)

2014年(4)

2013年(5)

2010年(1)

2009年(3)

2008年(6)

2007年(30)

2006年(8)

我的朋友

分类: Oracle

2015-05-08 08:57:02

    在企業的erp系統中,財務,資材,倉庫,關務等帳務都會有關帳功能.
   關帳後,之前月份的帳務數據將不再做任務新增,修改,刪除操作 .

  以倉庫帳為例, 月關帳後, 會將上月的月底庫存數據結存轉結為本月期初庫存.

  問題1: 所有月份的庫存結轉都是正確的嗎?有沒有關帳後又重新調整數據的情況?
     可以用Lead取出後一行數據的期初和當前行的期末作為對比, 數據不一致則是錯誤

  參考代碼如下: 倉庫帳以料號匯總校驗結存是否正確.

点击(此处)折叠或打开

  1. with xt as (
  2.     select yymm,mat_no,ultimo_stock,in_stock,out_stock,last_stock,
  3.     lead(yymm,1) over (partition by mat_no order by yymm) next_yymm , --下月
  4.     lead(ultimo_stock,1) over (partition by mat_no order by yymm) next_ultimo --下月期初
  5.     from
  6.     (
  7.         select yymm,mat_no,
  8.         sum(ultimo_stock) ultimo_stock,  --本月期初
  9.         sum(in_stock) in_stock,          --本月進
  10.         sum(out_stock) out_stock,        --本月出
  11.         sum(ultimo_stock)+ sum(in_stock) - sum(out_stock) last_stock --期末數量
  12.         from y3_ymfstock
  13.         where yymm > to_char(add_months(sysdate,-8), 'YYYYMM')
  14.         group by yymm,mat_no
  15.     )
  16. )
  17. select *
  18. from xt
  19. where yymm < to_char(sysdate, 'YYYYMM' )
  20.  and last_stock <> nvl(next_ultimo ,0) --期末庫存不等於下月期初庫存
  21. order by yymm,mat_no
 這種情況下,使用lag取前一行數據是否可行呢 ?
 回答: No. 當料號有結轉到本月,但是數量不一致時,能檢測到,
         但該料號沒有能夠結轉到本月.  這筆料號沒有能夠檢測到.

阿飛
2015/05/08

阅读(2587) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~