none
Koşullu yuvarlama işlemi RRS feed

  • Soru

  • Merhaba

    Ondalık sayılı bir sql sütunum var. Bunu yuvarlamak istiyorum aşağıdaki koşullarda. Fakat yapamadım, Yardımcı olabilirmisiniz.

    Eğer onalık kesim(x),

    x<0.25  ise aşağı tamsayıya   ----- 8.01354 ----> 8

    0.25<x<0.75 ise 0.5    ----- 8.31354 ----> 8.5

    0.75<x ise yukarı tamsayıya  ----- 8.81354 ----> 9

    Teşekkürler

    4 Kasım 2019 Pazartesi 07:18

Tüm Yanıtlar

  • ihtiyaç duyanlar olursa alttaki şekilde çözüldü,

    SELECT OriginalValue,
    a= case when   OriginalValue - ROUND(OriginalValue, 0, 1) between 0.25 and 0.75 then  ROUND(OriginalValue, 0, 1)+0.5
                               when   OriginalValue - ROUND(OriginalValue, 0, 1) < 0.25  then  FLOOR(OriginalValue)    
                               when   OriginalValue - ROUND(OriginalValue, 0, 1) > 0.75  then  CEILING(OriginalValue)   
                               end
    ,  OriginalValue - ROUND(OriginalValue, 0, 1) DecimalPart
    FROM #Decimals;
    

    4 Kasım 2019 Pazartesi 12:11
  • Merhaba,

    Bende şu şekilde çözüme gitmiştim.

    DECLARE @TABLO TABLE(SAYI FLOAT)
    INSERT INTO @TABLO VALUES('8.01354'),('8.31354'),('8.81354')
    
    SELECT *,CAST(SAYI AS INT)+CASE 
             WHEN SAYI-CAST(SAYI AS INT) BETWEEN '0' AND '0.25' THEN 0 
    		 WHEN SAYI-CAST(SAYI AS INT) BETWEEN '0.26' AND '0.75' THEN 0.50 
    		 WHEN SAYI-CAST(SAYI AS INT) BETWEEN '0.76' AND '0.100' THEN 1 
    		 ELSE 1 END 
    		  FROM @TABLO

    4 Kasım 2019 Pazartesi 12:23