我正在尋找一種方法來找到包裝數量的最低倍數(包括*1),該倍數大于或等于OrdQty(見下面的代碼)。從功能上講,每個訂購的數量必須是該專案包裝數量的倍數。
所以,
如果OrdQty = 3,PackingQuantity = 5,OrdQty必須變成5。
如果OrdQty = 5,而PackingQuantity = 3,OrdQty必須變成6.
。等等...
SELECT VmiItemUpdates.OrdQty, VmiItemPackagingQuantities.Quantity as PackingQuantity
FROM vm.VmiItemUpdates.
INNER JOIN vm.VmiItemPackagingQuantities ON VmiItemUpdates.[itemcode] = VmiItemPackagingQuantities.
但是我很難在TSQL中找到一個邏輯方法來做這個。誰能給我一個提示,告訴我一個方法?
uj5u.com熱心網友回復:
找到OrdQty / PackingQuantity的比率,并使用CEILING()四舍五入到最近的整數,然后乘以PackageQuantity
NewOrdQty = CEILING(OrdQty * 1。 0 / 包裝數量) * 包裝數量
uj5u.com熱心網友回復:
一種方法是使用一個模數,將PackingQuantity和模數之間的差值添加到Ordqty。
對于OrdQty的值5和PackingQuantity的值3,您希望得到6。OrdQtyModulo PackingQuantity的結果是2,然后你從PackingQuantity中減去1,最后加上OrdQty,得到6:
SELECT OrdQty,
包裝數量。
OrdQty PackingQuantity - ISNULL(NULLIF(OrdQty % PackingQuantity, 0),PackingQuantity) AS RequiredOrdQty
FROM(VALUES(3,5)。
(5,3) 。
(7,4)。
(3,10)。
(17,7))V(OrdQty,PackingQuantity)
(討厭的)ISNULL/NULLIF存在,因為x % x的值是0而不是x;如果我們不把0"換成x,那么當值很好地取整時,你最終會打包一個額外數量。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/328414.html
標籤:
上一篇:需要在C#中把simpledateformat(EEEMMMdHH:mm:sszyyyy)轉換成DateTime。
下一篇:通過grep從值中獲取關鍵細節
