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]