2015-01-28 13 views
5

Czy ktoś wie, w jaki sposób zaokrąglić do najbliższej .25 w t-sql? Obecnie jestem zaokrąglenie w dół przy użyciuRunda do najbliższej .25

floor(value * 4)/4 

Mój klient zmienia ich algorytm i chce zrobić midpoint zaokrąglić do najbliższego kwartału. Jeśli wartość jest mniejsza niż .125 zaokrąglona do 0.00, jeśli wartość jest większa lub równa .125 zaokrąglenia do .25.

Odpowiedz

6

użycie ROUND(value/25, 2) * 25 tak:

Przykład 1:

DECLARE @value DECIMAL(18, 2) 
SET @value = 1.126 
SELECT CAST(ROUND(@value/25, 2) * 25 as numeric(18,2)) AS rounded_val 

wyjściowa:

1.25 

Przykład2:

DECLARE @value DECIMAL(18, 2) 
SET @value = 1.124 
SELECT CAST(ROUND(@value/25, 2) * 25 as numeric(18,2)) AS rounded_val 

wyjściowa:

1.00 
1
select Sample, 
    Round((Sample + Sign(Sample) * 0.125) * 4, 0, 1)/4.0 as Rounded 
    from (values (0.0), (0.1), (1.125), (0.25), (10.5), 
    (-0.75), (-0.875), (-1.12), (-1.125)) 
    as Samples(Sample) 

Zauważ, że ROUND mogą być wykorzystane do obciąć część ułamkową wartość niezależnie od znaku. FLOOR zawsze zwróci wartość równą lub mniejszą niż pierwotną wartość, co może być problematyczne, gdy wartość jest ujemna.

0

Dla każdego, kto potrzebuje, aby znaleźć najbliższy rozdzielacz bez reszty można użyć:

SELECT (CAST(ROUND(@value/0.25, 2) as int)) * 0.25 

Więc w zasadzie to będzie zaokrąglić w dół do najbliższej wielokrotności 0,25

Powiązane problemy