none
Sql de yuvarlama işlemi RRS feed

  • Soru

  • Merhaba ;

    Sql serverda yuvarlama işlemi için round kullanıyorum ancak noktadan sonrası 5 ve üzeri yukarı yuvarlasın yoksa aşağı yuvarlasın istiyorum.Bunu nasıl yaparım.Sayıların yıllık ortalamasını alıp otomatik yapsın.

    Örneğin yıllık kullanım adeti 75 bunu 12 ye bölüp 2 ile çarpınca sonuç 12,5 çıkıyor.Ben bunu 13 göstermek istiyorum.

    9 Nisan 2017 Pazar 08:30

Tüm Yanıtlar

  • Merhabalar,

    SQL Server'da yuvarlama işlemleri için ROUND, FLOOR ve CEILING olmak üzere 3 farklı fonksiyon mevcut. Eğer amacınız ondalıklı kısım 5 ten büyükse yukarı 5 ten küçükse aşağı yuvarlanması ise ROUND, eğer ondalıklı kısım ne olursa olsun aşağıya yuvarlamak istiyorsanız FLOOR, ondalıklı kısım ne olursa olsun yukarı yuvarlamak istiyorsanız CEILING fonksiyonunu tercih edebilirsiniz. Sizin bahsettiğiniz senaryoda ROUND işinizi görecektir sanırım. Aşağıda her 3 fonksiyon için de bir örnek paylaşıyorum. Kendi sql server'ınızda çalıştırıp deneyebilirsiniz.

    declare @sayi decimal = 75
    
    select (@sayi/12)*2, ROUND((@sayi/12)*2, 0), FLOOR((@sayi/12)*2), CEILING((@sayi/12)*2)

    Sonuçları sırasıyla: 12.500000 13.0000

    12

    13

    şeklinde olacaktır. 

    Umarım faydalı olur...


    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    www.abdullahaltintas.com


    9 Nisan 2017 Pazar 10:23
  • SELECT ROUND((MALZEME_CIKIS_ADET/12)*2,0) AS 'MİKTAR' FROM TBL_MALZEMELER

    şeklinde sorgumda yapıyorum ancak 12 ye yuvarlıyor ...

    9 Nisan 2017 Pazar 14:02
  • Hocam selamlar,

    MALZEME_CIKIS_ADET isimli kolonunuzun veri tipi nedir acaba? Ondalıklı bir veri tipi değil de tamsayı tutan bir veritipi ise sorun bundan kaynaklı olabilir. Bu durumda aşağıdaki şekilde dönüşüm yapıp dener misiniz?

    SELECT ROUND((CAST(MALZEME_CIKIS_ADET as decimal)/12)*2,0) AS 'MİKTAR' 

    Umarım faydalı olur...


    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    www.abdullahaltintas.com

    10 Nisan 2017 Pazartesi 07:50