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