如何对where子句SQL中的随机行列求和

时间:2019-01-23 14:13:29

标签: sql-server

我有一个存储过程,可以根据参数从表中选择一些随机行,因此我需要循环运行,以便它不断选择随机行,直到它们的总和被接受为止

到目前为止,我还没有开始循环,因为我不知道如何使用列总和作为条件

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语句,所以我只能执行一次查询

1 个答案:

答案 0 :(得分:1)

您可以将查询视为子查询并将其求和,然后应用所需的逻辑

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