SQL> SELECT * FROM employee;
EMPNO EMPNAME
----- --------------------
00001 andi
00002 badrun
00003 jaka

/* Pake fungsi SYS_CONNECT_BY_PATH
(Hanya u/ Oracle 9i ke atas) */

SQL> SELECT 'empno'||MAX(SYS_CONNECT_BY_PATH(empno,' '))||
  2  -- tambahkan u/ setiap kolom berikut
  3  CHR(10)||
  4  'empname'||MAX(SYS_CONNECT_BY_PATH(empname,' '))
  5  hasil_query
  6  FROM (
  7    SELECT rownum row_no, empno, empname
  8    FROM employee
  9  )
 10  START WITH row_no = 1
 11  CONNECT BY PRIOR row_no = row_no-1;
HASIL_QUERY
----------------------------------------------------------
empno 00001 00002 00003
empname andi badrun jaka

/* untuk versi Oracle lain bisa dibuatkan fungsi dulu */

SQL> CREATE OR REPLACE FUNCTION v_to_h
  2  (col_name IN VARCHAR2, tab_name IN VARCHAR2)
  3  RETURN VARCHAR2 IS
  4    TYPE ref_cur IS REF CURSOR;
  5    v_string VARCHAR2(4000);
  6    v_path VARCHAR2(1);
  7    v_val VARCHAR2(4000);
  8    c1 ref_cur;
  9  BEGIN
 10    OPEN c1 for 'SELECT '||col_name||' FROM '||tab_name;
 11    v_string := col_name;
 12    v_path := ' ';
 13    LOOP
 14      FETCH c1 INTO v_val;
 15      EXIT WHEN c1%NOTFOUND;
 16      v_string := v_string||v_path||v_val;
 17    END LOOP;
 18    CLOSE c1;
 19    RETURN v_string;
 20  END;
 21  /
Function created.

SQL> SELECT v_to_h('empno','employee') hasil_query
  2  FROM DUAL
  3  -- tambahkan u/ setiap kolom berikut
  4  UNION ALL
  5  SELECT v_to_h('empname','employee')
  6  FROM DUAL;
HASIL_QUERY
--------------------------------------------------
empno 00001 00002 00003
empname andi badrun jaka

hth,
AH


Adnan Abdurrachman Bazargan wrote:
>
> salam,
> saya pengentau caranya untuk convert dari baris menjadi colom dengan 
> perintah SQL mikik oracle itu seperti gmana?
>
> misal:
> empNo empName
> 00001 andi
> 00002 badrun
> 00003 jaka
>
> hasil querynya:
> empno 0001 0002 0003
> empname andi badrun jaka
>
> trima kasih sebelumnya.
> mohon bantuannya
>
> salam.
>
> ---------------------------------
> Fussy? Opinionated? Impossible to please? Perfect. Join Yahoo!'s user 
> panel and lay it on us.
>
> [Non-text portions of this message have been removed]
>
>  

Kirim email ke