merubah dua atau lebih kolom menjadi satu kolom, kalo pake MySQL kita dapat memakai fungsi coalesce...
untuk SQL server ini caranya, .
script SQLnya kayak gini
pertama kita buat tabel1
Code:
create table table1 (kolom1 int, kolom2 varchar(50))
Go
trus kita isi datanya
Code:
insert table1
select 1,'satu' union all
select 1,'dua' union all
select 1,'tiga' union all
select 2,'empat' union all
select 2,'lima' union all
select 3,'enam' union all
select 3,'tujuh' union all
select 3,'delapan'
go
isi tabel1 jadi seperti ini
Kolom1 | Kolom2 |
1 | satu |
1 | dua |
1 | tiga |
2 | empat |
2 | lima |
3 | enam |
3 | tujuh |
3 | delapam |
nah kita buat fungsi buat groupingnya
Code:
create function dbo.Group_Concat(@kolom1 int)
returns varchar(5000)
--outputnya yang akan jadi kolom2
as begin
declare @out varchar(5000)
--mengabungkan isi kolom2 berdasarkan kriteria kolom1
select @out = coalesce(@out + ',' + kolom2, kolom2)
from table1
where kolom1 = @kolom1
return @out
end
fungsi diatas akan mengrouping nilai kolom2 berdasarkan input yang dimasukin(kolom1)
kalo dipanggil fungsinya... misalnya
Call Group_Concat(1)
maka returnnya = "satu,dua,tiga"
nah sekarang kita buat query untuk nampilin bukan hanya satu input tapi semua nilai dari kolom1
yang itu dengan mengisi parameter untuk fungsi Group_concat dari sub query
querynya :
Code:
select kolom1, dbo.Group_Concat(kolom1) kolom2
from
(select kolom1 from table1 group by kolom1 ) tempTable
dan outputnya akan menjadi
Kolom1 | Kolom2 |
1 | satu, dua, tiga |
2 | empat, lima |
3 | enam, tujuh, delapan |
Gw nyobainnya pake Ms SQL server 2005.... seharusnya bekerja untuk semua versi SQl server