Showing posts with label SQL Server. Show all posts
Showing posts with label SQL Server. Show all posts

Friday, 18 January 2013

Menggunakan Fungsi CASE pada SQL Server

 
CASE : Mengecek daftar kondisi dan memberikan salah satu hasil dari ekspresi yang mungkin.

Contoh :

Memberikan nilai pada suatu mata pelajaran
Nilai 86 - 100 :   A
Nilai 70 - 85   :   B
Nilai 56 - 69   :   C
Nilai 40 - 55   :   D
Nilai 0  -  39   :   E

Maka SQL nya adalah :



CASE... WHEN...... THEN.........ELSE  ..... END


Semoga bermanfaat.. ada yang mau share..?!?

Thursday, 17 January 2013

Menggunakan Fungsi String SQL Server

 
CHARINDEX : Mendapatkan posisi spesifik kata dari suatu kolom

Contoh :  Mencari posisi kata 'AA' pada kolom Nomor.
















REPLACE : Mengganti spesifik kata dari suatu kolom

Contoh : Rubah kata 'AA' menjadi 'XX' pada kolom Nomor
















LOWER: Mengganti huruf kapital / besar dengan huruf kecil
UPPER: Mengganti huruf kecil dengan huruf  kapital / besar

Contoh Rubah huruf AA menjadi huruf aa
















LEFT : Mendapatkan sejumlah karakter yang dimulai dari posisi paling kiri
RIGHT : Mendapatkan sejumlah karakter yang dimulai dari posisi paling kanan
SUBSTRING : Mendapatkan sejumlah karakter yang dimulai dari posisi tertentu

Contoh :

LTRIM : Menghilangkan spasi diawal karakter
RTRIM: Menghilangkan spasi di akhir karakter


SPACE : Memberikan sejumlah spasi

Contoh :

REVERSE : Membalikan ekspresi karakter

Contoh :
















STUFF : Menghapus sejumlah karakter dan menyisipi (insert) dengan karakter lain

Contoh :









Friday, 30 November 2012

Fungsi Datediff untuk mendapatkan selisih waktu

 
Gunakan Fungsi

DATEDIFF ( datepart , startdate , enddate

untuk menghitung seilish waktu

Datepart Abbreviations
Year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms


Select datediff(d,'6/25/2012','12/31/2012')

result   :   189


Select datediff(m,'6/25/2012','12/31/2012')

result   :   6


Select datediff(yy,'6/25/2012','12/31/2012')

result   :   0





Contoh penggunaan datediff yang cukup rumit


Menentukan berapa bulan karyawan bekerja di tahun 2012 ini hingga 1 Oktober 2012 berdasarkan tanggal masuknya.

NIK  Nama Tanggal_Masuk
=== ======== ====================
A001 Andrianto 21 April 2010
A002 Aswin 15 Oktober 2010
A003 Anwar 12 Februari 2011
A004 Arfan 05 Maret 2012
A005 Bobon 23 Mei 2012

Jika kita langsung menggunakan rumus datediff(m, tanggal_masuk,'10/1/2012') hasilnya akan salah, karena kita hanya menghitung di tahun 2012 saja.

dengan sedikit penambahan fungsi case dan mod (%) maka berikut hasilnya:

Select nik, nama, tanggal_masuk, datediff(M,Case when tanggal_masuk<'1/1/2012' then '1/1/2012' else tanggal_masuk end,'10/1/2012') % 12 as jumlah_bulan_kerja_2012
from mstkaryawan 


NIK  Nama Tanggal_Masuk Jumlah_bulan_kerja_2012
=== ======== ===========  ==========================
A001 Andrianto 21 April 2010 9
A002 Aswin 15 Oktober 2010 9
A003 Anwar 12 Februari 2011 9
A004 Arfan 05 Maret 2012 6
A005 Bobon 23 Mei 2012 4



Penjelasan :

datediff(M,Case when tanggal_masuk<'1/1/2012' then '1/1/2012' else tanggal_masuk end,'10/1/2012')

Datediff('M',...,...)  digunakan untuk selisih bulan antara tanggal masuk dengan tanggal 1 Oktober 2012.
Case digunakan jika tanggal masuk karyawan < '1/1/2012' maka dianggap masa kerja karyawan tahun 2012 dimulai dari bulan Januari 
Contoh :

A001 Andrianto 21 April 2010 (menjadi 1/1/2012')     9 (dari Januari 2012 s/d 1 Oktober 2012)
A002 Aswin 15 Oktober 2010  (menjadi 1/1/2012')   9 (dari Januari 2012 s/d 1 Oktober 2012)
A003 Anwar 12 Februari 2011  (menjadi 1/1/2012')   (dari Januari 2012 s/d 1 Oktober 2012)

Jika tanggal masuk kerja lebih dari (>) 1/1/2012 maka langsung dihitung dari tanggal masuk kerja .

A004 Arfan 05 Maret 2012 (dari Maret 2012 s/d 1 Oktober 2012)
A005 Bobon 23 Mei 2012 (dari Mei 2012 s/d 1 Oktober 2012)


Sedangkan untuk fungsi MOD itu sendiri menggunakan tanda   %
datediff(M,Case when tanggal_masuk<'1/1/2012' then '1/1/2012' else tanggal_masuk end,'10/1/2012') % 12 as jumlah_bulan_kerja_2012

...  % 12 maka akan mengambil sisa pembagian bulan dari tanggal masuk dibagi 12.

Tuesday, 13 November 2012

Fungsi REPLACE pada SQL Server

 
Syntax REPLACE dalam SQL Server berfungsi menggantikan beberapa atau seluruh ekspresi string dengan ekspresi string yang baru.


Syntax

REPLACE ( 'string_expression1' , 'string_expression2' , 'string_expression3' )

Contoh


Rubah tanda titik (".") pada kolom registrasi menjadi tanda strip ("-")

Gunakan perintah 

REPLACE (Registrasi,'.','-')

Select Nama, Replace(Registrasi,'.','-') as Registrasi From Tbl_Pendaftaran 


Semoga bermanfaat!



Sunday, 23 September 2012

Summation time in sql server ( SUM waktu di SQL Server )

 
Penjumlahan waktu dengan menggunakan SQL Server
Misalnya ada data sebagai berikut :
Di suatu kelas diadakan seleksi lari dengan batas waktu minimum adalah 15 detik.

b1b3h.blogspot.com

misal : kolom waktu dan Delay tipe datanya varchar

Hitung jumlah waktu dan delay dari ke lima siswa tersebut diatas.
Menggunakan fungsi SUM(Waktu) untuk menjumlahkan data waktu dan delay tidak dapat dilakukan, oleh karena itu harus dilakukan beberapa langkah:

1. Rubah waktu dan delay menjadi tipe data Time dengan CAST(kolom as time) 
    (jika kolom tersebut tipe data bukan DateTime)
   
       Misal tipe data waktu dan delay semula adalah varchar rubah menjadi time
          
          Cast(waktu as Time)

          Untuk yang Delay karena ada tanda minus harus disesuaikan terlebih dahulu dengan menggunakan         
       
       CASE WHEN Left(Delay,1)='-' Then Cast(SUBSTRING(Delay,2,10) as Time) END

2. Rubah Time menjadi satuan detik dengan menggunakan Datediff(Second,'00:00:00',kolom)
        
          Datediff(second,'00:00:00',Cast(waktu as Time)) as waktu
          
         Datediff(second,'00:00:00',CASE WHEN Left(Delay,1)='-' Then 
         Cast(SUBSTRING(Delay,2,10) as Time) else 0 END) as Delay

3. Jumlahkan dengan menggunakan SUM(waktu) dan SUM(delay)
       
          SUM(Datediff(second,'00:00:00',Cast(waktu as Time))) as waktu
        
        SUM(CASE WHEN Left(Delay,1)='-' Then         
        Datediff(second,'00:00:00',Cast(SUBSTRING(Delay,2,10) as Time))
        else 0 END)


Dengan demikian didapat hasil dalam satuan detik.
Kode Selengkapnya sampai langkah nomor 3 adalah sebagai berikut :

select  SUM(datediff(second,'00:00:00',CAST(Waktu as Time))) as Waktu,
SUM(case when Left(Delay,1)='-' then 
Datediff(second,'00:00:00',Cast(substring(Delay,2,10) as Time)) else 0 end) as Delay
from  DataLari


4.  Jika ingin hasil ditampilkan dalam bentuk waktu maka tambahkan perintah DateAdd(second,waktu,'00:00:00')

select  DateAdd(second,SUM(datediff(second,'00:00:00',CAST(Waktu as Time))),'00:00:00') as Waktu,
DateAdd(second,SUM(case when Left(Delay,1)='-' then 
Datediff(second,'00:00:00',Cast(substring(Delay,2,10) as Time)) else 0 end),'00:00:00') as Delay
from  DataLari


5. Jika masih belum merasa puas dengan hasil tampilannya, dan masih ingin dalam bentuk waktu tanpa hari gunakan CONVERT(Time,Waktu)

select  Convert(Time,DateAdd(second,SUM(datediff(second,'00:00:00',CAST(Waktu as Time))),'00:00:00')) as Waktu,
Convert(Time,DateAdd(second,SUM(case when Left(Delay,1)='-' then 
Datediff(second,'00:00:00',Cast(substring(Delay,2,10) as Time)) else 0 end),'00:00:00')) as Delay
from  DataLari




Semoga bermanfaat!












Thursday, 20 September 2012

Menggunakan Fungsi MOD Pada SQL Server

 
Fungsi MOD adalah mencari hasil dari sisa pembagian
Misalnya
  • 10 MOD 4 adalah 2 

Sekarang Bagaimana menggunakannya dalam SQL Server

Untuk SQL Server gunakan tanda %

  • Select 10  %  4  maka hasilnya 2
  • Select 10  %  2  maka hasilnya 0

Semoga bermanfaat !