我想計算箱數量/最小訂單數量,需要一點幫助。計算箱數量T-SQL
如果說我有386所需的數量,但箱子的數量是500,我需要回到500的訂單數量
像明智的,如果需要的數量是540和箱量500我需要回到1000的訂單數量
我需要這是在SQL
任何幫助,將不勝感激
提前非常感謝
我想計算箱數量/最小訂單數量,需要一點幫助。計算箱數量T-SQL
如果說我有386所需的數量,但箱子的數量是500,我需要回到500的訂單數量
像明智的,如果需要的數量是540和箱量500我需要回到1000的訂單數量
我需要這是在SQL
任何幫助,將不勝感激
提前非常感謝
一個簡單的可重複使用的計算箱數量的函數。
CREATE FUNCTION udf_CalculateBoxQuantity
(
@RequiredAmount INT,
@BoxQuantity INT
)
RETURNS INT
AS
BEGIN
DECLARE @Ret INT
SET @Ret = @BoxQuantity * CEILING((CAST(@RequiredAmount AS DECIMAL(20,10))/CAST(@BoxQuantity AS DECIMAL(20,10))))
RETURN @Ret
END
在使用整數除法時,使用類型轉換和天花板似乎資源效率低下,可能會執行相同的技巧。標量函數也不能很好地處理設置的邏輯,所以如果你想要一個可以與集合很好地工作的可重用函數,那麼你應該使它成爲一個表值函數(有一行和一列),以便你可以使用CROSS APPLY。 – 2013-04-24 12:50:54
即插即用 - 完美 David,感謝您的解決方案和上述建議,但是我並未將此應用於10萬億行,因此性能可以忽略不計 – 2013-04-24 13:15:53
好問題。
我會這樣解決它,試用@reqQuantity的不同值來看它是如何工作的。
DECLARE @reqQuantity INT = 386
,@boxSize INT = 500
SELECT CASE WHEN @reqQuantity % @boxSize = 0 THEN @reqQuantity ELSE (@reqQuantity/@boxSize+1)*@boxSize END AS OrderQuantity
涉及表格的示意圖和示例數據? – 2013-04-24 12:02:04