Ferry said the following on 20/10/05 10:43 AM:
> pak m4z3,
> tampaknya pernyataan problem dan result set yg diinginkan 'kurang' jelas
> bagi saya.
> shg saya menduga MUNGKIN yang pak m4z3 maksudkan adalah begini:....
>
> Asumsi saya:
> - ORDER_NO dan REL_NO (mungkin SEQUENCE juga) mengidentifikasi satu PROCESS
> yang harus End-to-end.
> - Payment atas purchase diindikasikan LUNAS jika ada 2 row di View.
> - ORDER_NO, REL_NO, DIRECTION menunjukkan masuknya barang (+) dan adanya
> pembayaran (-).
> shg jika hanya ada 1 row yg berisi ORDER_NO dan REL_NO dipastikan ROW
> ini OUTSTANDING.
> - Payment dilaksanakan per ORDER_NO dan langsung LunaS atau QTY ORDERED (+)
> = QTY PAYED(-)
> - Indikasi LUNAS (Bukan Outstanding) terdeteksi jika ada 2 row
> yang memiliki ORDER_NO dan REL_NO yang sama. Jika row ini memiliki tgl
> tranx utk
> BULAN YG DIMINTA maka row ini DITAMPILKAN, sebaliknya row ini TIDAK
> DITAMPILKAN (sbg result set).
> - Indikasi OUTSTANDING = jika hanya ada 1 row yang berisi ORDER_NO dan
> REL_NO .
Dugaan Pak Ferry benar, ini yg saya maksud :)
> drop table tmp purge;
> create table tmp (dated date, TRAN_CODE varchar2(10),
> ORDER_NO NUMBER, REL_NO NUMBER);
>
> ALTER SESSION SET NLS_DATE_FORMAT ='dd/mm/rr';
> insert into tmp VALUES ('05-01-05', 'ARR-NONINV', 10256, 1);
> insert into tmp VALUES ('28/02/05' ,'SUPPPAY', 10256, 1);
> insert into tmp VALUES ('05/01/05','ARR-NONINV', 10256, 2);
> insert into tmp VALUES ('28/02/05','SUPPPAY' , 10256, 2);
> insert into tmp VALUES ('15/07/05', 'ARR-NONINV', 11213, 1);
> insert into tmp VALUES ('30/07/05', 'SUPPPAY', 11213, 1);
> insert into tmp VALUES ('30/07/05', 'ARR-NONINV', 21551, 1);
> insert into tmp VALUES ('08/06/05', 'ARR-NONINV', 11111, 1);
>
> Untuk bulan ini
> SQL> SELECT * FROM tmp WHERE TO_CHAR(dated,'rrrrmm') = '200507';
>
> DATED TRAN_CODE ORDER_NO REL_NO
> -------- ---------- ---------- ----------
> 15/07/05 ARR-NONINV 11213 1
> 30/07/05 SUPPPAY 11213 1
> 30/07/05 ARR-NONINV 21551 1
>
>
> Query ini menghasilkan result set semua yang outstanding, kecuali bulan-thn
> yg diminta
> utk bulan sampai dengan bulan-tahun ini, dapat dicoba yaa....
> SQL> SELECT order_no, rel_no, COUNT (*) FROM tmp
> 2 WHERE TO_CHAR(dated,'rrrrmm') <> '200507'
> 3 GROUP BY (order_no, rel_no)
> 4 HAVING COUNT (*) =1;
>
> ORDER_NO REL_NO COUNT(*)
> ---------- ---------- ----------
> 11111 1 1
>
> Sekarang result set itu dapat di UNION, namun dibawah ini saya gunakan
> fungsi analitik
> SQL> SELECT *
> 2 FROM (
> 3 SELECT dated, order_no,rel_no,
> 4 COUNT(*) OVER (PARTITION BY order_no, rel_no) as chk
> 5 FROM tmp)
> 6 WHERE TO_CHAR(dated,'rrrrmm') = '200507' OR
> 7 (chk =1 AND TO_CHAR(dated,'rrrrmm') <> '200507');
>
> DATED ORDER_NO REL_NO CHK
> -------- ---------- ---------- ----------
> 08/06/05 11111 1 1
> 15/07/05 11213 1 2
> 30/07/05 11213 1 2
> 30/07/05 21551 1 1
OK thank atas masukannya, saya akan pelajari sintak SQL buatan
Pak Ferry.
> ferry sends.
--
m4z3
------------------------ Yahoo! Groups Sponsor --------------------~-->
Fair play? Video games influencing politics. Click and talk back!
http://us.click.yahoo.com/T8sf5C/tzNLAA/TtwFAA/PhFolB/TM
--------------------------------------------------------------------~->
--
-----------I.N.D.O - O.R.A.C.L.E---------------
Keluar: [EMAIL PROTECTED]
Website: http://indo-oracle.lizt.org (NEW)
-----------------------------------------------
Bergabung dengan Indonesia Thin Client User Groups,
Terminal Server, Citrix, New Moon Caneveral, di:
http://indo-thin.vze.com
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/indo-oracle/
<*> To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/