DECLARE @example TABLE(ID INT, Amount float)
INSERT INTO @example VALUES(1,100), (2,500), (3,50), (4,200)
select * from @example
DECLARE @Target Float = 600
现在,我需要热门记录where Sum(Amount) = @Target
,此目标可能会有所不同。
有人可以给我一个sql查询。
答案 0 :(得分:0)
您可以使用相关子查询(以及其他方法)计算累积总和。假设id
唯一标识行:
select e.*
from (select e.*,
(select sum(amount)
from @example e2
where e2.id <= e.id
) as cumamount
from @example e
) e
where cumamount = @Target;
这准确地查找目标值。更常见的是,您需要以下内容:
where cumamount >= @Target and cumamount - amount < @Target;
即,满足或超过@Target
值的第一个值。