DECLARE @Sample TABLE (SellOrderID CHAR(1), QuantRemaining INT, Price SMALLMONEY)
INSERT @Sample
SELECT 'A', 100, $2.00 UNION ALL
SELECT 'B', 300, $3.00 UNION ALL
SELECT 'C', 200, $1.75 UNION ALL
SELECT 'D', 350, $2.50
DECLARE @ParamValue INT,
@Sum SMALLMONEY,
@Items INT
SELECT @ParamValue = 400,
@Sum = 0
SELECT @Items = CASE
WHEN @ParamValue > 0 AND QuantRemaining <= @ParamValue THEN QuantRemaining
WHEN @ParamValue > 0 AND QuantRemaining > @ParamValue THEN @ParamValue
ELSE 0
END,
@ParamValue = @ParamValue - @Items,
@Sum = @Sum + @Items * Price
FROM (
SELECT TOP 100
QuantRemaining,
Price
FROM @Sample
ORDER BY Price
) AS d
SELECT @Sum
E 12°55'05.25"
N 56°04'39.16"