sql-server - 如何在where子句SQL中对随机行列求和
问题描述
我有一个存储过程,它根据参数从表中选择一些随机行,我需要在循环中运行它,因此它不断选择随机行,直到它们的总和被接受
到目前为止,我还没有开始循环,因为我不知道如何使用列的总和作为条件
GO
IF OBJECT_ID('dbo.spx_SELECT_RandomLocalizacoes') IS NOT NULL
DROP PROCEDURE spx_SELECT_RandomLocalizacoes
GO
CREATE PROCEDURE spx_SELECT_RandomLocalizacoes
@Localizacoes_Max int,
@Filtro int,
@Armazem int
AS
BEGIN
SET NOCOUNT ON
SELECT TOP (@Localizacoes_Max) * FROM xInventario
WHERE Armazem = @Armazem AND SUM(Quantidade) > @Filtro
ORDER BY newid()
END
最终结果应该是一个返回符合条件的行的过程
编辑:
我忘了补充,我必须返回带有相同种子的随机行的选择语句,所以我只能执行一次该查询
解决方案
您可以将查询视为子查询并对其求和,然后应用您正在寻找的任何逻辑
if (SELECT SUM(Randoms.YourField) FROM (SELECT TOP (@Localizacoes_Max) * FROM xInventario
WHERE Armazem = @Armazem AND SUM(Quantidade) > @Filtro
ORDER BY newid()) AS Randoms) = @Target
BEGIN
--do stuff
END
推荐阅读
- c++ - conanfile.py、conanfile.txt、conanprofile和settings.yml有什么区别?
- pyspark - 如何在本地模拟 S3AFileSystem 以使用 pytest 测试 spark.read.csv?
- sql - SQL Server SELECT 第一次出现或如果没有出现 SELECT 其他条件
- sql-server - 使用存储过程从 Excel 获取数据到 SQL Server
- flutter - 颤动中带有 CheckboxListTile 的 AlertDialog
- dask - dask调度程序OOM打开大量avro文件
- flutter - 颤振:GridView 未正确显示
- xml - 错误:找不到资源 android:dimen/system_app_widget_internal_padding
- python - Gspread 配额超出,错误 429 - Python
- php - 如何存储和返回 MQTT 回调函数的结果?PHP - Laravel