要按照车辆同一车辆的相邻两次加油时间 将上一次的加油量 平均分配到每一天。

--相邻两个记录日期的差(分组)
CREATE TABLE [dbo].[a](
[clbh] [varchar](50) NULL,
[jyje] [numeric](18, 3) NULL,
[jyscllc] [numeric](18, 0) NULL,
[jyrq1] [varchar](50) NULL
) ON [PRIMARY]
select b.jyrq1 开始日期,
a.jyrq1 结束日期,
datediff(day,convert(varchar(100),b.jyrq1,23),convert(varchar(100),a.jyrq1,23)) 日期差,
b.jyje 上次金额,
a.jyje 本次金额,
b.jyscllc 上次加油量,
a.jyscllc 本次加油量,
round(b.jyscllc/ datediff(day,convert(varchar(100),b.jyrq1,23),convert(varchar(100),a.jyrq1,23)),2) 平均量
--datadiff(dd,a.jyrq1,b.jyrq1)
from
(select ROW_NUMBER() over(order by convert(varchar(100),jyrq1,23) ) No,
clbh,jyrq1,jyje,jyscllc
from a
where LEN(clbh)>2) a
left join
(select ROW_NUMBER() over(order by convert(varchar(100),jyrq1,23) )No,
clbh,jyrq1,jyje,jyscllc
from a
where LEN(clbh)>2) b
on a.No = b.No+1
where b.jyrq1 is not null

-----------------------------------------------------------------------------------------------
方法二:拆表
1、主表:

2、拆分表

用 触发器

该博客讨论了如何使用SQL查询将一辆车相邻两次加油的量平均分配到每一天。提供了解决方案,包括通过DATEDIFF函数计算日期差,并在SELECT语句中进行计算以获取每天的平均加油量。
1041

被折叠的 条评论
为什么被折叠?



