我有这种表架构
DateTime | Item | Value | Active
--------------------------------
date1 i1 23 1
date2 i1 25 0
date3 i1 25 -1
仅执行插入,“活动”列表示:1已创建,-1已删除,0值已更改。关键是让所有项目在特定日期仍处于活动状态,并且使用group by(Item) having sum(active)>1
很容易,但我想要的是获取活动项目的最新值。
因此,在这个例子中它将是:
我的Sql不是很强大所以我需要一些帮助来查询(或者可能采用不同的存储/处理方法)获取所有活动项及其相对于给定开始/结束日期的更新值
答案 0 :(得分:0)
您可以使用outer apply
:
select t.*
from table t outer apply
(select top 1 t2.*
from table t2
where t2.datetime > t.datetime
order by t2.datetime asc
) tnext
where @date >= t.datetime and
(t.datetime < tnext.datetime or tnext.datettime is null) and
t.status <> -1;