2014-07-23 46 views
0

我正在尋找一種方法來返回調整爲「最高」季度的值。我無法取整,因爲返回的值不能大於原始值。例如,如果值爲53.290,則需要返回53.25,而51.49將返回51.25。我可以在t-sql中執行此操作嗎?t-sql最近四分之一小時

+1

你可以乘以四,截斷爲整數併除以四? –

+0

我以前沒有看到您的評論。如果你將它作爲答案添加,我將相應地標記它 –

回答

2

您提供的答案Steve除以0.25的效果與此代碼具有相同的效果。我不確定,但我覺得乘以四是比分數更清晰。

SELECT (FLOOR(@myValue * 4))/4.0 
+0

我同意,這就是爲什麼你得到這一點。 –

0
DECLARE @Value DECIMAL(10,4) = 53.290; 

SELECT ROUND(@Value/25.00, 2) * 25 

Result: 53.250000000 

圓角值兩位數

SELECT CONVERT(DECIMAL(18, 2), ROUND(@Value/25.00, 2) * 25) 

Result: 53.25 
+0

當十進制值大於.125時,這將變爲.25。我原來的帖子有點不清楚,但是當小數點小於.25時,我需要它返回.00。 –

0

這將基於目前的decimal.I右側剛纔想上我的手的價值得到最近的季度。希望它會有用。試試不同的值。

DECLARE @Value DECIMAL(10, 2) = 53.49 

SELECT CASE 
     WHEN CAST(RIGHT(@Value, 2) AS FLOAT) > 0 
      AND CAST(RIGHT(@Value, 2) AS FLOAT) <= 49 
      THEN FLOOR(@Value) + 0.25 
     WHEN CAST(RIGHT(@Value, 2) AS FLOAT) > 49 
      AND CAST(RIGHT(@Value, 2) AS FLOAT) <= 74 
      THEN FLOOR(@Value) + 0.50 
     ELSE CEILING(@Value) - 0.25 
     END 
2

經過這一點,做了一些更多的研究,我認爲這是最好的解決方案。感謝大家的迴應。

DECLARE @myvalue DECIMAL(8,4); 
SET @myvalue = 53.26; 

SELECT (Floor(@myvalue/.25)) * .25; -- Returns 53.25 

SET @myvalue = 53.24; 
SELECT (Floor(@myvalue/.25)) * .25; -- Returns 53.00 
相關問題