首页 > 解决方案 > 选择记录以将列总和为 600

问题描述

我有一个表,其中有一列名为“价格”,如果我对该列中的所有记录求和,结果为 1000,但我只需要选择必要的结果即可获得 600,我该怎么做?

我试过用游标做到这一点,但它不起作用

declare cursor1 cursor
for select* from SERVICES

open cursor1

while((select SUM(Price) from SERVICES)=600)
begin
  fetch next from cursor1
  select SUM(Price) from SERVICES
end

close cursor1
deallocate cursor1

标签: sql-servertsqldatabase-cursor

解决方案


这是一个演示如何使用窗口函数的选项

需要明确的是,结果可能不完全是 600。

例子

Select *
 From  (
        Select *
              ,RT = sum(Price) over (Order by Price)
         From  YourTable
       ) A
 Where RT<=600

推荐阅读