MsSQL如何在一次查询中从给定的日期和仓库号获取最近的未来值和值的总和
Posted
技术标签:
【中文标题】MsSQL如何在一次查询中从给定的日期和仓库号获取最近的未来值和值的总和【英文标题】:MsSQL how to get nearest future value and sum of value from given date and warehouse number in one query 【发布时间】:2020-09-16 13:28:23 【问题描述】:我有如下数据
我需要按仓库选择未来值的总和,并按仓库选择最接近的未来值。
例如。结果应该是这样的(如果 getdate() = 16-09-2020):
一个查询就可以做到吗?
【问题讨论】:
【参考方案1】:您只能使用窗口函数:
select *
from (
select
warehouse,
sum(value) over(partition by warehouse) sum_future_value
value nearest_future_value,
date nearest_future_date,
row_number() over(partition by warehouse order by date) rn
from mytable
where date > getdate()
) t
where rn = 1
在子查询中,我们过滤未来的日期,按仓库计算即将到来的值的总和,并对记录进行排名。剩下要做的就是过滤每个组的较早记录。
【讨论】:
【参考方案2】:过滤后可以使用窗口函数和条件聚合:
select warehouse, sum(value),
max(case when seqnum = 1 then value end) as nearestfuturevalue,
min(date) as nearestfuturedate
from (select t.*,
row_number() over (partition by warehouse order by date) as seqnum
from t
where date > getdate()
) t
group by warehouse
【讨论】:
以上是关于MsSQL如何在一次查询中从给定的日期和仓库号获取最近的未来值和值的总和的主要内容,如果未能解决你的问题,请参考以下文章
Instagram Basic API:是不是可以在一次查询中从“CAROUSEL_ALBUM”获取 media_url?