Di SQL Server, kolom terhitung adalah kolom virtual yang menggunakan ekspresi untuk menghitung nilainya.
Kolom yang dihitung biasanya akan menggunakan data dari kolom lain dalam perhitungannya. Jika data di salah satu kolom tersebut diperbarui, kolom yang dihitung akan secara otomatis mencerminkan pembaruan dalam penghitungannya.
Contoh Kolom Terhitung
+------------+-------------+------------+----------------+ | PersonID | FirstName | LastName | FullName | |------------+-------------+------------+----------------| | 1 | Homer | Seinfeld | Homer Seinfeld | | 2 | Bart | Costanza | Bart Costanza | | 3 | Marge | Kramer | Marge Kramer | +------------+-------------+------------+----------------+
Dalam contoh ini, FullName
kolom adalah kolom yang dihitung. Ini menggabungkan nilai dari FirstName
dan LastName
kolom untuk menghitung nama lengkap.
Tanpa kolom yang dihitung, jika Anda ingin memilih nama lengkap, Anda perlu melakukan sesuatu seperti ini:
SELECT FirstName + ' ' + LastName AS FullName FROM Person;
Atau Anda bisa menggunakan CONCAT()
fungsinya, seperti ini:
SELECT CONCAT(FirstName, ' ', LastName) AS FullName FROM Person;
Setiap kali Anda ingin memilih nama lengkap dari tabel, Anda harus menyertakan rangkaian dalam kueri Anda.
Tetapi dengan menggunakan kolom yang dihitung seperti di atas, Anda dapat melakukan ini:
SELECT FullName FROM Person;
Manfaat Kolom Komputasi
Kolom yang dihitung dapat menghemat waktu saat menulis kueri, mengurangi kesalahan, dan bahkan meningkatkan kinerja.
Kolom yang dihitung dapat berguna jika Anda mendapati diri Anda berulang kali menjalankan kueri yang sama berulang kali, terutama jika kueri tersebut didasarkan pada aturan bisnis yang jarang berubah.
Kolom yang dihitung pada contoh sebelumnya dapat menghemat banyak waktu di masa mendatang, karena kita tidak perlu menggabungkan nama depan dan nama belakang setiap kali kita ingin memilih nama lengkap seseorang.
Contoh Kasus Penggunaan
Contoh di mana kolom yang dihitung dapat berguna meliputi:
- Menghitung usia seseorang, berdasarkan tanggal lahirnya di kolom lain
- Menggabungkan nama depan dan nama belakang, berdasarkan nama depan dalam satu kolom, dan nama belakang di kolom lain
- Menghitung nilai inventaris produk, berdasarkan jumlah stok produk di satu kolom, dan harga di kolom lain
- Menghitung BMI (Indeks Massa Tubuh) seseorang, berdasarkan tinggi dan berat badannya di kolom lain
- Membuat kolom “Peringkat” yang memberi peringkat pada baris, berdasarkan nilai di kolom lain
- Menghitung waktu balapan pelari maraton, berdasarkan waktu mulai dan waktu berakhir mereka di kolom lain
Persistensi Kolom yang Dihitung
Kolom yang dihitung tidak disimpan secara fisik dalam tabel kecuali jika ditandai PERSISTED
.
Jika tidak kolom dihitung yang bertahan, perhitungan akan terjadi setiap kali tabel diakses.
Jika adalah kolom dihitung bertahan, nilai dihitung secara fisik disimpan dalam tabel. Artinya, tidak perlu menghitung nilainya setiap kali Anda menjalankan kueri. Jika data diperbarui di salah satu kolom yang mendapatkan nilainya, nilai kolom yang dihitung diperbarui dan disimpan dalam tabel. Ini dapat membantu kinerja.
Ketahuilah bahwa kolom yang dihitung hanya dapat dipertahankan jika bersifat deterministik. Jika non-deterministik, Anda akan mendapatkan kesalahan jika Anda mencoba untuk mempertahankannya.
Sebuah non-deterministik kolom adalah salah satu yang mengembalikan nilai yang berbeda bahkan dengan input yang sama. Misalnya, jika Anda menggunakan tanggal saat ini dalam perhitungan Anda, nilainya akan berbeda setiap hari, dan itu akan dianggap non-deterministik.
Jika Anda hanya menggabungkan nama depan dan nama belakang, maka itu akan menjadi deterministik, dan Anda dapat mempertahankan kolom seperti itu.
Membuat Kolom Terhitung
Anda dapat membuat kolom yang dihitung dari GUI SSMS atau dengan Transact-SQL.
Dalam SSMS
Di SSMS, saat berada di Perancang Tabel , buat kolom yang Anda inginkan menjadi kolom yang dihitung (atau cukup pilih jika sudah ada), lalu di bawah Properti Kolom tab, masukkan rumus Anda ke dalam Spesifikasi Kolom Terhitung bidang properti.
Jangan khawatir tentang memberikan kolom yang dihitung tipe data – SQL Server akan memberikan tipe data berdasarkan rumus Anda.
Anda juga dapat memilih Ya untuk Bertahan jika Anda ingin.
Menggunakan T-SQL
Lihat Membuat Kolom Terhitung di SQL Server menggunakan T-SQL untuk contoh membuat kolom terhitung menggunakan Transact-SQL.