我有一個表,PriceTable,TSQL - ROUND價格爲.05和.09。更新正在生成NULL?
列UPC(INT),價格(錢)
我想圓所有美分的價格列,在任一.x5或.x9結束。
如果價格的最後一位數字是0-5,那麼最後一位應當是5
如果價格的最後一位數字是6-9,那麼最後一位應當是9
例子
- 1.00變爲1.05
- 1.21變爲1.25
- 1.26變爲1.29
我使用的是下面,但更新後,我得到的一些記錄,其價格也被更新爲NULL,我無法弄清楚爲什麼。它對95%的數據正常工作,但是我看不到與數據不同的地方。
我的想法是(Round(Price,1,2))給出了價格中的美元,從總價中減去得到美分,然後使用CASE語句添加正確的.05或.09返回到價格。
UPDATE PriceTable
SET Price = ROUND(Price,1,2) +
CASE
WHEN Price -(ROUND(Price,1,2)) BETWEEN .00 AND .05 THEN .05
WHEN Price -(ROUND(Price,1,2)) BETWEEN .06 AND .09 THEN .09
END;
有沒有更好的方式來做到這一點?我不能換我的頭周圍爲什麼我會得到一個空的價格時,所有分情形應占即使他們間沒有」噸,我仍然應該得到價格與圓的價格(價格,1,2)我不應該需要一個ELSE,因爲不應該有任何其他條件
謝謝,
馬歇爾
必須有價格像1.255或1.295通過裂縫下跌。 –
@YuxiuLi - 就是這樣。謝謝。 – FreeMars