Dear Bayu,

Berikut saya berikan procedurenya berdasarkan request :

create or replace procedure test2 is

cursor c1 is
select distinct a.id_code, c.CODE_BAGIAN, c.NAMA_BAGIAN, 
to_char(a.TGL_IZIN,'MM-YYYY') bulan, 
b.masa_kerja, max(a.lama_izin) lama_ijin
from dev_tbl_izin_keluar a, dev_tbl_karyawan b, dev_tbl_bagian c
where a.id_code = b.id_code
and b.CODE_BAGIAN = c.CODE_BAGIAN
group by a.id_code, c.CODE_BAGIAN, c.NAMA_BAGIAN, 
to_char(a.TGL_IZIN,'MM-YYYY'), masa_kerja
order by lama_ijin desc, masa_kerja desc;

ijin_old    varchar2(100);
ijin_new    varchar2(100);
masa_old    varchar2(100);
masa_new    varchar2(100);
hasil       varchar2(100);

begin

ijin_old := '0.00';
masa_old := '0.00';
for i in c1 loop
    ijin_new := i.lama_ijin;
    masa_new := i.masa_kerja;
    if (ijin_new > ijin_old and masa_new > masa_old) then
        ijin_old := ijin_new;
        masa_old := masa_new;
        hasil    := '| '||i.id_code||' | '||i.code_bagian||' | 
'||i.nama_bagian||' | '||i.bulan||' | '||ijin_old||' |';        
    else
        exit;    
    end if;    
end loop;
dbms_output.put_line('| ID_CODE | SECTION_CODE | SECTION_NAME | BULAN | 
TOT_HOUR |');
dbms_output.put_line(hasil);
end;


Output :

| ID_CODE | SECTION_CODE | SECTION_NAME | BULAN | TOT_HOUR |
| 103 | 3A | PROD. TV | 04-2009 | 5 |

Structure Table :

CREATE TABLE DEV_TBL_IZIN_KELUAR
(
  ID_CODE    VARCHAR2(3 BYTE),
  TGL_IZIN   DATE,
  LAMA_IZIN  NUMBER
);

CREATE TABLE DEV_TBL_KARYAWAN
(
  ID_CODE       VARCHAR2(3 BYTE),
  NAMA_ANGGOTA  VARCHAR2(30 BYTE),
  TTL           DATE,
  ALAMAT        VARCHAR2(30 BYTE),
  MASA_KERJA    NUMBER,
  CODE_BAGIAN   VARCHAR2(2 BYTE)
);

CREATE TABLE DEV_TBL_BAGIAN
(
  CODE_BAGIAN  VARCHAR2(2 BYTE),
  NAMA_BAGIAN  VARCHAR2(25 BYTE),
  TIPE_BAGIAN  VARCHAR2(25 BYTE),
  KODE_DEPT    VARCHAR2(1 BYTE)
);

Semoga bermanfaat.
Thx

Amaulana




________________________________
Dari: Kang Oyib <[email protected]>
Kepada: indo-oracle <[email protected]>
Terkirim: Senin, 4 Mei, 2009 10:21:03
Topik: [indo-oracle] Select Max Condition





Dear all,

Ada sedikit masalah, saya memiliki tabel sebagai berikut :

TABLE KARYAWAN

ID_CODE   NAMA_ANGGOTA   TTL          ALAMAT      MASA_KERJA   CODE_BAGIAN
100       RAHMAT         01-01-1976   RAWAMANGUN  3            2A
101       UDIN           03-11-1978   JAPATI      2            2B
102       BUDI           15-04-1980   LOMBOK      5            3B
103       WAWAN          08-09-1975   SETIABUDI   6            3A

TABEL BAGIAN
CODE_BAGIAN   NAMA_BAGIAN      TIPE_BAGIAN   KODE_DEPT
0             PT. KURNIA       PERS          -
1             DIREKTUR         DIR           0
2             DEPT. MARKETING  DEPT          1
2A            SALES            BAG           2
2B            PROMOSI          BAG           2
3             PRODUKSI         DEPT          1
3A            PROD. TV         BAG           3
3B            PROD. AC         BAG           3

TABEL IZIN_KELUAR
ID_CODE   TGL_IZIN     LAMA_IZIN (JAM)
100       01-04-2009   2
101       05-04-2009   1.5
100       10-04-2009   1
102       11-04-2009   3
103       12-04-2009   5
102       20-04-2009   2

Dari tabel tersebut, saya ingin mendapatkan data karyawan yang
memiliki jam izin tertinggi, jika ada beberapa karyawan maka yang
dipilih adalah karyawan dengan masa kerja terlama, seperti barikut :

ID_CODE   SECTION_CODE   SECTION_NAME   BULAN        TOT_HOUR
103            3A                        PROD. TV             04-2009       5

Terimakasih atas solusinya... ....

kang.toyib

   


      Apa dia selingkuh? Temukan jawabannya di Yahoo! Answers. 
http://id.answers.yahoo.com

[Non-text portions of this message have been removed]

Kirim email ke