-1
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

您可能想要提供一個SQL小提琴,有關您正在查找「SUM」的項目結構的更多詳細信息。你已經嘗試了什麼?我建議先看看使用'SELECT ... FROM ... GROUP BY ... HAVING'的行來開始。也許從閱讀「如何問」指南開始(http://stackoverflow.com/questions/how-to-ask) – talegna

回答

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值的第一個值。