lag偏移问题

SELECT

    时间,

    LAG(累计现金) OVER (ORDER BY 时间) AS 上日现金,

    LAG(累计银行) OVER (ORDER BY 时间) AS 上日银行,

    LAG(累计余额) OVER (ORDER BY 时间) AS 上日余额

FROM

    (SELECT

        时间,

        SUM(现金收入) OVER (ORDER BY 时间) AS 累计现金,

        SUM(银行收入) OVER (ORDER BY 时间) AS 累计银行,

        SUM(现金收入 + 银行收入 - 现金支出 - 银行支出) OVER (ORDER BY 时间) AS 累计余额

    FROM

        日报

WHERE itemid = 'aca15c09-ee93-494c-9fb2-d440e3ae5738' AND  时间 >'2023-08-30') AS C

image.png

因为我只有这几天有数据,所以偏移出来以后只有这几天的偏移数据,我想呈现的是2023-10-12 10-11  都有数据该怎么修改lag函数

FineReport 帆软用户A5K1Xo5JDb 发布于 2023-10-27 11:52
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
快乐星光Lv5中级互助
发布于2023-10-27 11:56(编辑于 2023-10-27 13:56)

再上一个问题里面不是有人跟你说了吗,需要先把数据库里面的日期补齐,然后用你这个sql就可以了。

是不是想要这个效果?

with A as(

-- 你的数据库表

select '2023-09-10' 时间,66 现金收入,88 银行收入

union all select '2023-09-12' 时间,77 现金收入,8 银行收入

union all select '2023-09-14' 时间,22 现金收入,44 银行收入

union all select '2023-09-15' 时间,9 现金收入,12 银行收入

),

B AS(

select '2023-09-10' [startDate],CONVERT(NVARCHAR(10),GETDATE(),120) [endDate]

)

select alldate.rq,SUM(现金收入) OVER (ORDER BY alldate.rq) AS 累计现金,

            SUM(银行收入) OVER (ORDER BY alldate.rq) AS 累计银行

from 

(

select convert(varchar(10),dateadd(DAY,number,startDate),120) as [RQ] 

from B , master..spt_values

where type='P' and number>=0 and number<10  -- 自己设置日期区间

and dateadd(DAY,number,startDate)<=endDate

) alldate

left join A a on a.时间=alldate.RQ

image.png

  • 2关注人数
  • 127浏览人数
  • 最后回答于:2023-10-27 13:56
    请选择关闭问题的原因
    确定 取消
    返回顶部