Thursday, October 9, 2014

Convert some rows to column SQL , Query , Select, on PostgreSql

Dapat dilihat pada gambar dibawah ini. yaitu ketika ingin melakukan query suatu table dan menghasilkan result seperti pada gambar dibawah ini di postgre bisa menggunakan suatu alternatif cara yaitu menggunakan agregate.


Sebagai Contoh dibawah ini adalah fungsi untuk menggabungkan dua variable bertipe Text.

CREATE OR REPLACE FUNCTION xx_text_accum(text, text) 
RETURNS text 
LANGUAGE SQL 
AS $$
 SELECT $1||$2||', ';
  
$$;

$1 merupakan text pertama yang kemudian di gabungkan dengan $2 atau text kedua secara recursive. kemudian tanda ', ' (coma) berfungsi sebagai delimiter.


Fungsi kedua xx_text_accum_last(text) yaitu fungsi yang digunakan untuk menghilangkan karakter coma pada text terakhir.

CREATE OR REPLACE FUNCTION xx_text_accum_last(text) 
RETURNS text 
LANGUAGE SQL 
AS $$
  select substr(trim($1), 0, length($1) - 1);
$$;

Dibawah ini merupakan cara untuk membuat Agregate selain dari pada yang sudah exsisting di postgre seperti sum() average() count() dll.

CREATE AGGREGATE text_accum (text)
(
sfunc = xx_text_accum,
stype = text,
initcond = '',
FINALFUNC = xx_text_accum_last
);

Dan untuk melihat hasilnya bisa menggunakan perintah (query) seperti di bawah ini 

Select col1, text_accum(col2) from table_name group by col1;

Sekian langkah dari proses convert rows to column pada query database. terimakasih :)

0 komentar:

Post a Comment