如何选择所有记录,其中这些记录的字段之和等于指定值

时间:2017-11-29 11:09:46

标签: sql-server tsql

请您帮忙创建下一步的查询:

我有桌子

  ID             Amount     Name    
 -----------------------------------
   1              100       Name1                
   2              50        Name2
   3              60        Name3
   4              10        Name4
   5              70        Name5
   6              10        Name6

我需要选择金额总和= 70

的任何集合中的所有记录

以下任何结果都将更正

1

  ID             Amount     Name    
 -----------------------------------
   5              70        Name5

2

  ID             Amount     Name    
 -----------------------------------
   2              50        Name2
   4              10        Name4
   6              10        Name5

3

  ID             Amount     Name    
 -----------------------------------
   3              60        Name3
   6              10        Name6

4

  ID             Amount     Name    
 -----------------------------------
   3              60        Name3
   4              10        Name4

由于

1 个答案:

答案 0 :(得分:1)

我想使用第一个结果

SELECT MAX(ID) [ID], SUM(Amount) [Amount], Name FROM <table>
    GROUP BY Name HAVING SUM(Amount) = 70

编辑:使用窗口函数

select ID, Amount, Name from
(
    select ID, 
       Amount,
      Name,
      SUM(Amount) OVER (ORDER BY ID ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) [Sum] from <table>
) a where Sum = 80