DECLARE @Products TABLE (ProductID INT, ProductName VARCHAR(200), Price DECIMAL) DECLARE @ProductsUnique TABLE (Row_ID INT IDENTITY(1,1), ProductID INT, ProductName VARCHAR(200), Price DECIMAL) DECLARE @FinalList TABLE (ProductID INT, ProductName VARCHAR(20), Price DECIMAL) INSERT INTO @Products(ProductID, ProductName,Price) SELECT 1, 'A', 500 UNION ALL SELECT 2, 'B', 200 UNION ALL SELECT 3, 'C', 100 UNION ALL SELECT 4, 'E', 300 DECLARE @MaximumValue INT, @SumValue INT SET @MaximumValue = 1000 SET @SumValue = 0 INSERT INTO @ProductsUnique(ProductID, ProductName, Price) SELECT ProductID, ProductName, Price FROM @Products DECLARE @Counter INT SET @Counter = 1 WHILE @SumValue < @MaximumValue BEGIN INSERT INTO @FinalList(ProductID, ProductName, Price) SELECT ProductID, ProductName, Price FROM @ProductsUnique WHERE Row_ID = @Counter SELECT @SumValue = SUM(Price) FROM @FinalList IF @SumValue >= @MaximumValue BEGIN DELETE a FROM @FinalList a INNER JOIN @ProductsUnique b ON a.ProductID = b.ProductID WHERE b.Row_ID = @Counter SET @SumValue = @MaximumValue + 1 -- To exit loop END SET @Counter = @Counter + 1 END SELECT * FROM @FinalList