Buat para newbie oracle mari kita sama-sama belajar sedikit disini mengenai SQL syntax nya…
kita akan bahas bagaimana kita membuat report MATRIX di oracle.
Nah berikut ini contoh mudahnya, misal kita mempunyai data berikut :
Col1 Col2 Value
‘A1′ ‘A’ 9
‘A1′ ‘C’ 2
‘A1′ ‘D’ 12
‘B1′ ‘A’ 2
‘B1′ ‘D’ 1
‘C1′ ‘A’ 33
‘C1′ ‘C’ 4
‘C1′ ‘D’ 65
‘D1′ ‘A’ 23
‘D1′ ‘B’ 77
‘D1′ ‘D’ 87
o iya, untuk membuat MATRIX ini minimal terdapat 3 kolom, satu untuk baris, satu untuk kolom dan satu lagi adalah nilainya.
Setalah kita punya contoh data diatas, kita ingin menampilkan datanya seperti dibawah ini,
COL1 A B C D
A1 10 2 12
B1 2 1
C1 33 4 65
D1 23 77 87
Nah berikut solusinya (dengan oracle database ) :
select COL1,
sum( case when col2='A' then val1 END) A,
sum( case when col2='B' then val1 END) B,
sum( case when col2='C' then val1 END) C,
sum( case when col2='D' then val1 END) D
FROM PIVOT_TEST GROUP BY COL1;
Bagaiman hasilnya ?
sebelum mencobanya, agar mempermudah pencobaan dibawah adalah script untuk membuat table dan mengisi data contohnya ini sql syntax nya,
CREATE TABLE PIVOT_TEST
(COL1 CHAR(2), COL2 CHAR(2), VAL1 NUMBER(2));
INSERT INTO PIVOT_TEST ( COL1, COL2, VAL1 ) VALUES (
'A1', 'A', 1);
INSERT INTO PIVOT_TEST ( COL1, COL2, VAL1 ) VALUES (
'A1', 'A', 9);
INSERT INTO PIVOT_TEST ( COL1, COL2, VAL1 ) VALUES (
'A1', 'C', 2);
INSERT INTO PIVOT_TEST ( COL1, COL2, VAL1 ) VALUES (
'A1', 'D', 12);
INSERT INTO PIVOT_TEST ( COL1, COL2, VAL1 ) VALUES (
'B1', 'A', 2);
INSERT INTO PIVOT_TEST ( COL1, COL2, VAL1 ) VALUES (
'B1', 'D', 1);
INSERT INTO PIVOT_TEST ( COL1, COL2, VAL1 ) VALUES (
'C1', 'A', 33);
INSERT INTO PIVOT_TEST ( COL1, COL2, VAL1 ) VALUES (
'C1', 'C', 4);
INSERT INTO PIVOT_TEST ( COL1, COL2, VAL1 ) VALUES (
'C1', 'D', 65);
INSERT INTO PIVOT_TEST ( COL1, COL2, VAL1 ) VALUES (
'D1', 'A', 23);
INSERT INTO PIVOT_TEST ( COL1, COL2, VAL1 ) VALUES (
'D1', 'B', 77);
INSERT INTO PIVOT_TEST ( COL1, COL2, VAL1 ) VALUES (
'D1', 'D', 87);
COMMIT;
Bagamana bila kita ingin menampilkannya seperti ini ?
COL1 A B C D
A1 10 0 2 12
B1 2 0 0 1
C1 33 0 4 65
D1 23 77 0 87
Atau seperti ini :
COL1 A B C D TOTAL
A1 10 0 2 12 24
B1 2 0 0 1 3
C1 33 0 4 65 102
D1 23 77 0 87 187
Dan atau seperti ini :
COL1 A B C D TOTAL
A1 10 0 2 12 24
B1 2 0 0 1 3
C1 33 0 4 65 102
D1 23 77 0 87 187
TOTAL 68 77 6 165 316
Silahkan mencoba sendiri SQL syntax nya…






