• sqlserver 指定上月25-本单据日期/本月24 数据汇总的保存后存储过程


    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    /*
    在单据保存后,自动给每种项目的累计列赋 上月25-本单据日期数据的累计值。
    */
    alter proc [dbo].[ww_zhbb_sczhrbb_bch] 
    @voucherno varchar(60), --:单据类型,
    @keyid varchar(60), --:单据ID,
    @state varchar(60) --:状态[add、edit]
    --@voucherno:单据类型,@keyid:单据ID,@state:状态[add、edit]
    AS
    BEGIN
    if(@voucherno = 'ww_zhbb_sczhrbb')
    begin
    declare 
    @djrq varchar(100), --单据日期
    @syrq varchar(100), --上月日期
    @xyrq varchar(100), --下月日期
    @djny varchar(100) --单据年月
    
    /* 获取单据上月,下月,当前月的年月部分 */
    select @djrq=convert(varchar(10),ddate,23) from ww_zhbb_sczhrbb where ID=@keyid
    set @syrq=convert(varchar(7),DateAdd(month,-1,@djrq),23) --当前单据日期-1月,只取年月部分,形式为:2019-06
    set @xyrq=convert(varchar(7),DateAdd(month,1,@djrq),23) --当前单据日期+1月,只取年月部分
    set @djny=convert(varchar(7),@djrq,23) --当前单据日期,只取年月部分	
    
    
    --定义变量
    declare @i int, 
    @ljsbyzl decimal(18,6),
    @ljtc decimal(18,6),
    @ljscsj decimal(18,6),
    @ljcl decimal(18,6)	
    --循环
    set @i = 1
    while (@i<11)
    begin
    /* 
    若 当前日期的日<=24,取本单据所在月份 的上月25 - 该单据日期的数据汇总,
    否则... 取 ... 本月25 - 该单据日期的数据汇总 
    */	
    select @ljsbyzl=brsbyzl,@ljtc=brtc,@ljscsj=brscsj,@ljcl=brcl from 
    (select row_number() over (order by c.ww_zhbb_sczhrbbmx0_sortno) as RowID,sum(c.brsbyzl) AS brsbyzl,SUM(c.brtc)AS brtc,SUM(c.brscsj)AS brscsj,SUM(c.brcl)AS brcl
    from ww_zhbb_sczhrbb as z left join ww_zhbb_sczhrbbmx0 as c on z.id = c.ww_zhbb_sczhrbbmx0_id 
    where (z.ddate >= Convert(date,(case when DAY(@djrq)<=24 then @syrq+'-'+'25' else @djny+'-'+'25' end)) and z.ddate <=@djrq)    --到本单据日期为截至期限的写法
    --Convert(date,(case when DAY(z.ddate)<=24 then @djny+'-'+'24' else @xyrq+'-'+'24' end)) -- 至本月24日或下月24为截至期限的数据累计 写法 
    group by c.ww_zhbb_sczhrbbmx0_sortno) as A WHERE RowID=@i
    --SELECT @ljsbyzl,@ljtc,@ljscsj,@ljcl
    update ww_zhbb_sczhrbbmx0 set ljsbyzl=@ljsbyzl,ljtc=@ljtc, ljscsj=@ljscsj, ljcl=@ljcl
    where ww_zhbb_sczhrbbmx0_id = @keyid and ww_zhbb_sczhrbbmx0_sortno =@i*10
    set @i = @i+1
    end
    end
    END
    GO

      

  • 相关阅读:
    HDU 1213 How Many Tables(并查集,简单)
    POJ 1611 The Suspects(并查集,简单)
    HDU 4539 郑厂长系列故事――排兵布阵(曼哈顿距离)
    POJ 2411 Mondriaan'sDream(状压DP)
    ZOJ 4257 MostPowerful(状压DP,简单)
    HDU 3001 Traveling(状压DP)
    POJ 3311 Hie with the Pie(Floyd+状态压缩DP)
    POJ 1185 炮兵阵地(状态压缩DP)
    POJ 3254 Corn Fields(状态压缩DP)
    XueXX and Chessboard(dp)
  • 原文地址:https://www.cnblogs.com/ziyanxiaozhu/p/11051196.html
Copyright © 2020-2023  润新知