Etiket arşivi: mssql

MSSQL Rollup ve Cube ile satır şeklinde toplam

Mssql Rollup ve Cube ile Nasıl Toplam Alınır?

Yazdığınız programda satır toplamı alma işini direk olarak veritabanında yapmak isteyebilirsiniz.

Bu işlemi yapabilmek için rollup veya cube komutlarını kullanmanız gerekir.

Aşağıda bunların kullanımını örnekledim;

 

deneme_not1 isminde şöyle bir tablomuz olsun
rollup

Örnek olarak şu kayıtları girelim

rollup

rollup ve cube için bir kaç deneme yapıp sonucunu görelim

rollup

rollup

rollup

Görüldüğü üzere rollup ile aldığımız sorgu, group by alanında belirttiğimiz sütunlara göre toplam oluşturuyor, cube ile aldığımız sorgu ise farklı sütun kombinasyonları için tek tek toplamlar oluşturuyor.

Son olarak da mantığı daha net görebilmek için basit bir örnek yapalım

rollup ve cube toplam

Sorguda dikkatinizi çekmesi gereken bir nokta da isnull() fonksiyonu, cube ve rollup toplamlara bağlı sütun değerini null olarak döndürdüğü için eğer nullsa Toplam yaz mantığıyla bu fonksiyonu kullanabiliyoruz.

MSSQL DateTime toplama-çıkarma

mssql datetime

Mssql ile datetime toplama çıkarma nasıl yapılır?

Mssql veritabanında datetime alanı üzerinde toplama ve çıkarma yapabilmek için hazırladığım kod aşağıdadır

Datetime kolonlarını dakika bazında birbirinden çıkarıyor ve ilgili tabloya yerleştiriyor.


select

servis_personelcalismasuresi.sureid,

servis_personelcalismasuresi.personelid,

(personel_kimlik.ad + ' ' + personel_kimlik.soyad) personel,

sum((DATEDIFF(n, CAST('00:00' AS DATETIME), servis_personelcalismasuresi.mesaibitis)
-DATEDIFF(n, CAST('00:00' AS DATETIME), servis_personelcalismasuresi.mesaibaslangic))) mesai

from servis_personelcalismasuresi

inner join personel_kimlik on personel_kimlik.personelid=servis_personelcalismasuresi.personelid

group by servis_personelcalismasuresi.sureid, servis_personelcalismasuresi.personelid, personel_kimlik.ad, personel_kimlik.soyad

order by servis_personelcalismasuresi.sureid desc