在Sbo中通过单据事务日志进行物料的期初、期末、出入库综合分析

一个非常有用的Sbo业务查询分析,利用Sbo单据事务日志表OINM,对指定期间的物料的期初、期末、入库、出库以及特殊类型的出库入库--在此我们分析了采购入库和采购退货两种特殊的业务类型--进行了统计分析。
 
当然可以进行扩展,进而加上一些分析条件,比如对指定的仓库、指定的物料类型、排除指定的物料等条件进行约束。以下语句在某合作单位的生产环境上测试通过,并用于其生产分析。
 
_declare @dt1 smalldatetime, @dt2 smalldatetime, @ItemCode nvarchar(20)
_select @dt1=t0.docDate FROM OINM t0 WHERE t0.createDate=[%0]
_select @dt2=t1.docDate FROM OINM t1 WHERE t1.createDate=[%1]
_select @ItemCode=t2.ItemCode from OITM t2 where t2.ItemCode = '[%2]'
_select tc.ItmsGrpNam N'物料组名称',tc.ItmsGrpCod N'物料组',ta.itemcode N'物料号',tb.ItemName N'物料名称',sum(ta.begqty) N'期初数量',sum(ta.begtotal) N'期初金额', sum(Buyqty) N'采购入库数量',sum(Buytotal) N'采购入库金额',sum(Retqty) N'采购退货数量',sum(Rettotal) N'采购退货金额',sum(inqty) N'库存收货数量',sum(intotal) N'库存收货金额',sum(outqty) N'库存发货数量',sum(outtotal) N'库存发货金额',sum(endqty) N'期未数量',sum(endtotal) N'期未余额'
from (
 _select ItemCode,sum(begqty) begqty,sum(begtotal) begtotal,sum(inqty)inqty,sum(intotal)intotal,sum(outqty) outqty,sum(outtotal) outtotal,sum(endqty) endqty,sum(endtotal) endtotal, sum(BuyQty) BuyQty, sum(BuyTotal) BuyTotal, sum(RetQty) RetQty, sum(RetTotal) RetTotal
  FROM 
   (
       _select a.ItemCode,sum(IsNull(IsNull(a.InQty,0),0)-IsNull(IsNull(a.OutQty,0),0)) begqty,sum(a.TransValue) begtotal,0 inqty,0 intotal,0 outqty,0 outtotal,0 endqty,0 endtotal, 0 BuyQty, 0 BuyTotal, 0 RetQty, 0 RetTotal
        from oinm a 
    where ( a.ItemCode=@ItemCode or IsNull(@ItemCode,'')='') and a.CreateDate < IsNull(@dt1, cast('2001-1-1' as smalldatetime))
       group by a.ItemCode
       union all
       _select a.ItemCode,0,0,sum(IsNull(a.InQty,0)),sum(case when a.TransValue>=0 then a.TransValue else 0 end),sum(IsNull(a.OutQty,0)),sum(case when a.TransValue<0 then a.TransValue else 0 end),0,0,0,0,0,0
        from oinm a 
    where ( a.ItemCode=@ItemCode or IsNull(@ItemCode,'')='') and a.CreateDate between IsNull(@dt1, cast('2001-1-1' as smalldatetime)) and IsNull(@dt2,getdate()) And a.TransType not in ('20','21')
        group by a.ItemCode
       union all
       _select a.ItemCode,0,0,0,0,0,0,sum(IsNull(IsNull(a.InQty,0),0)-IsNull(IsNull(a.OutQty,0),0)),sum(a.TransValue),0,0,0,0
        from oinm a 
    where ( a.ItemCode=@ItemCode or IsNull(@ItemCode,'')='') and a.CreateDate<=IsNull(@dt2,getdate())
        group by a.ItemCode
       union all
       _select a.ItemCode,0,0,0,0,0,0,0,0,sum(IsNull(IsNull(a.InQty,0),0)-IsNull(IsNull(a.OutQty,0),0)),sum(a.TransValue),0,0
        from oinm a 
    where ( a.ItemCode=@ItemCode or IsNull(@ItemCode,'')='') and a.CreateDate between IsNull(@dt1, cast('2001-1-1' as smalldatetime)) and IsNull(@dt2,getdate()) and a.TransType='20'
        group by a.ItemCode
       union all
       _select a.ItemCode,0,0,0,0,0,0,0,0,0,0,sum(IsNull(IsNull(a.InQty,0),0)-IsNull(IsNull(a.OutQty,0),0)),sum(a.TransValue)
        from oinm a 
    where ( a.ItemCode=@ItemCode or IsNull(@ItemCode,'')='') and a.CreateDate between IsNull(@dt1, cast('2001-1-1' as smalldatetime)) and IsNull(@dt2,getdate()) and a.TransType='21'
        group by a.ItemCode
   ) tmp 
   group by ItemCode) ta 
  inner join oitm tb on ta.itemcode = tb.ItemCode 
  inner join oitb tc on tb.ItmsGrpCod = tc.ItmsGrpCod 
group by tc.ItmsGrpNam, tc.ItmsGrpCod, ta.itemcode, tb.ItemName


本文转自foresun  51CTO博客,原文链接:http://blog.51cto.com/foresun/104533,如需转载请自行联系原作者
在MATLAB生成具有特定带宽变化模式的SBO(Step-Chirp Binary Offset Carrier, SBO)信号,通常需要使用信号处理工具箱的函数来实现。SBO信号是一种用于导航信号的调制方式,它通过在不同的时间步长上进行不同带宽的线性调频(LFM)脉冲来实现。下面是一个基本的步骤来生成SBO信号: 1. 定义SBO信号的参数,包括每个步进的带宽、持续时间、频率范围等。 2. 创建每个带宽步进对应的线性调频信号(Chirp信号)。这可以通过`chirp`函数来实现,该函数允许你指定开始频率、结束频率、持续时间以及调制类型。 3. 将所有带宽步进的信号组合起来,形成完整的SBO信号。这通常涉及到信号的拼接,可以使用MATLAB的数组拼接功能来完成。 4. 如果需要,对生成的SBO信号进行必要的数字到模拟转换处理,以便可以将其应用到实际的物理系统。 下面是一个简单的MATLAB代码片段,用于生成一个具有两个带宽变化的SBO信号: ```matlab % SBO信号参数 fs = 1000e3; % 采样频率 T = 1e-3; % 每个Chirp脉冲的持续时间 f0 = 100e3; % 起始频率 beta = 1e12; % 频率调制斜率(带宽) % 生成第一个Chirp脉冲 t = 0:1/fs:T-1/fs; chirp1 = chirp(t, f0, T, f0+beta*T); % 生成第二个Chirp脉冲,具有不同的带宽 beta2 = 2*beta; % 第二个Chirp的带宽是第一个的两倍 chirp2 = chirp(t, f0, T, f0+beta2*T); % 将两个Chirp脉冲组合成SBO信号 sboSignal = [chirp1; chirp2]; % 绘制SBO信号 tTotal = t + T; stem(tTotal, sboSignal); xlabel('Time (s)'); ylabel('Amplitude'); title('SBO Signal'); ``` 请注意,上述代码仅为示例,实际应用SBO信号的生成可能会更加复杂,需要根据具体的带宽变化模式和应用需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值