sql-server - 选择记录以将列总和为 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
解决方案
这是一个演示如何使用窗口函数的选项
需要明确的是,结果可能不完全是 600。
例子
Select *
From (
Select *
,RT = sum(Price) over (Order by Price)
From YourTable
) A
Where RT<=600
推荐阅读
- java - 有没有办法在构造函数中使用 Lombok 的 @builder 和一组有限的属性?
- mysql - 从 Mysql(Mariadb) 数据库中删除倒数第二行
- laravel - Flutter Laravel api 更新用户
- python - 从 Nominatim GeoPy 响应中获取国家/地区
- c# - 如何修改表中的数据
- r - R:通过索引替换列值的内存有效方法
- loops - Clang:如何查看loop flattening pass的效果?
- c++ - 用于捕获所有局部变量并对其进行迭代的 Lambda 函数
- react-native - React 原生 youtube、vimeo 和 mp4 视频播放器
- javascript - 如何从代码中动态读取 manifest.webmanifest 文件?