如何对子句 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

最终结果应该是一个过程,该过程向我返回符合条件的行

编辑:

忘了添加它,我必须返回带有相同种子的随机行的 select 语句,所以我只能执行一次查询

您可以将

查询视为子查询并对其进行求和,然后应用您要查找的任何逻辑

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

最新更新