Dear Richard,

Sorry for that :) and thanks for your tips, but it didn't solve my problem. Maybe because my postgresql knowledge limitation. I have tried your suggestion, my view like this :

-- View: "vwlapjual"

-- DROP VIEW vwlapjual;

CREATE OR REPLACE VIEW vwlapjual AS
 SELECT tblpenjualan.tanggal, tblpenjualan."operator", tblpenjualan.noinvoice, tblpenjualan.bayar, tblpenjualan.bayarvocher, tblpenjualan.jam, tblpenjualan.id, tblpenjualan.jeniscard, tbltransaksi.kodeproduk, tbltransaksi.keluar, tbltransaksi.harga, tbltransaksi.disc1, tblproduk.namabarang, tblproduk.subkat, tblsubkategori.subkategori, tblkategoriproduk.kode, tblkategoriproduk.kategori, tbltransaksi.hargapokok * tbltransaksi.keluar::numeric(2,0) AS modal, tbltransaksi.keluar * tbltransaksi.harga - (tbltransaksi.disc1 / 100::numeric(3,0) * (tbltransaksi.keluar * tbltransaksi.harga))::numeric(10,0) AS jumlah, tbltransaksi.keluar * tbltransaksi.harga - tbltransaksi.disc1 / 100::numeric(3,0) * (tbltransaksi.keluar * tbltransaksi.harga) - (tbltransaksi.hargapokok * tbltransaksi.keluar)::numeric(10,0) AS profit
   FROM tblpenjualan
   JOIN tbltransaksi ON tblpenjualan.id = tbltransaksi.jualid
   LEFT JOIN tblproduk ON tbltransaksi.kodeproduk::text = tblproduk.kode::text
   LEFT JOIN tblsubkategori ON tblproduk.subkat::text = tblsubkategori.id::text
   LEFT JOIN tblkategoriproduk ON tblsubkategori.kategoriid::text = tblkategoriproduk.kode::text;

ALTER TABLE vwlapjual OWNER TO hpl;

and the view result like this :

"2008-07-20";"ULY";"01-200708";"Tunai";0.00;"1899-12-30 21:14:47+06:55:25";1;"";"8993417200021";1.00;4200.00;0.00;"ELIPS HAIR VITAMIN ";"121";"VITAMIN RAMBUT";"NF";"Non Food";3960.00;4200.0000;240.000000000000000000000000

Thanks for any suggestion.

Regards,
Hengky


Richard Huxton wrote:
Hengky Lie wrote:
  
Dear friends,
    

Hello. Quick tip - don't reply to another message when starting a new
thread, people will assume it's part of the old thread.

[snip most of query]
  
/ 100::numeric * 
    

  
Food";3960.0000;*4200.000000000000000000000000*;*240.000000000000000000000000*
    

  
Why  the calculation result has so many decimals ?
    

Because you've cast 100 to numeric, rather than numeric(10,2) or
whatever. This means you get the full accuracy on the calculation - it
won't ever trim a numeric (that's the whole reason to have the type).