从日期开始的动态sql总和列+=1

dnph8jn4  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(353)

我试图求一个数字变量从特定开始日期起的天数的总和。事务总是在范围内更新。例如,我有:

Date              Animal    VetCost
2018-01-01        Cat       5
2018-01-01        Dog       10
2018-01-02        Dog       10
2018-01-03        Dog       10
2018-01-03        Cat       1

对于我的输出表,我希望看到的是:

Animal     Begin Date Range    End Date Range      Cost
Cat        2018-01-01          2018-01-02          5
Dog        2018-01-01          2018-01-02          20
Dog        2018-01-01          2018-01-03          30
Cat        2018-01-01          2018-01-03          6

开始日期范围和结束日期范围不必如上所示,但我需要一些方法来知道日期范围是什么。。。。下面是创建示例数据的代码。

create table #temp
(   Date date,
    Animal varchar(12),
    Cost int
)

insert into #temp (Date, Animal,Cost)
    values ('2018-01-01','Cat', 5)
            ,('2018-01-01','Dog', 10)
            ,('2018-01-02','Dog', 10)
            ,('2018-01-03','Dog', 10)
            ,('2018-01-03','Cat', 1)

select * from #temp
41ik7eoe

41ik7eoe1#

嗯。我想知道你是不是只想要一个累加的总数:

select t.*,
       sum(cost) over (partition by animal order by date) as total_cost
from #temp t;
8nuwlpux

8nuwlpux2#

mark gordon的回答被接受,但调整如下:

select t.animal,x.earliest,t.date,
       sum(cost) 
       over (partition by t.animal order by date) as total_cost
from #temp t
join (select animal,min(date) as Earliest 
      from #temp group by animal) x on x.Animal=t.Animal

这应该是你想要的

相关问题