Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何对where子句SQL中的随机行列求和_Sql Server - Fatal编程技术网

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

Sql server 如何对where子句SQL中的随机行列求和,sql-server,Sql Server,我有一个存储过程,它根据一个参数从一个表中选择许多随机行,我需要在循环中运行它,以便它不断选择随机行,直到它们的总和被接受为止 到目前为止,我还没有开始循环,因为我不知道如何使用列的和作为条件 GO IF OBJECT_ID('dbo.spx_SELECT_RandomLocalizacoes') IS NOT NULL DROP PROCEDURE spx_SELECT_RandomLocalizacoes GO CREATE PROCEDURE spx_SELECT_RandomLocali

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

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

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

看起来应该这样做,但我认为我需要将查询存储在一个变量中,以便返回具有相同生成种子的行