Rewrite the max query...
The inner select statement works fast and few columns generated based on A.QSN_DESC_X values, AND to get a single row I am doing a group by on cmpltn_i by taking the max row. When I do this group by the query takes approx 5 mnts. The inner query returns 227270 records. The final query give 37,000 records.
Can someone suggest any better way to write this query?
select
CMPLTN_I,
max(emp_i) as emp_i,
max(first_name) as first_name,
max(last_name) as last_name,
max (vendor) as vendor,
max (product_type) as product_type,
max (event_type) as event_type,
max (dollar_amt) as dollar_amt,
max (date_received) as date_received,
max (branch_code) as branch_code
from (
select /*+DRIVING_SITE(A)*/
B.CMPLTN_I,
B.emp_i,
E.EMP_1ST_NME_X as first_name,
E.EMP_LAST_NME_X as last_name,
case when substr(A.QSN_DESC_X,1,6) = 'Vendor' then A.CHCE_DESC_X else null end as vendor,
case when substr(A.QSN_DESC_X,1,12) = 'Product Type' then A.CHCE_DESC_X else null end as product_type,
case when substr(A.QSN_DESC_X,1,10) = 'Event Type' then A.CHCE_DESC_X else null end as event_type,
case when substr(A.QSN_DESC_X,1,13) = 'Dollar Amount' then A.CHCE_DESC_X else null end as dollar_amt,
case when substr(A.QSN_DESC_X,1,13) = 'Date Received' then A.CHCE_DESC_X else null end as date_received,
case when substr(A.QSN_DESC_X,1,16) = 'Branch Wire Code' then A.CHCE_DESC_X else null end as branch_code
from OAT.FORM_FACT@REMOTE_AB A, OAT.FORM_CMPLTN_FACT@REMOTE_AB B, empl_info_dimn E
where A.CMPLTN_I = B.CMPLTN_I
and B.CMPLTN_C = 'C'
and B.app_i = '20'
and E.emp_i = B.emp_i
group by
CMPLTN_I
10g release 2.
cost based, statistics are good
without driving site hint, the response time is bad
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
Plan hash value: 2770348679
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | Inst |IN-OUT|
| 0 | SELECT STATEMENT REMOTE| | 922K| 139M| | 104K (1)| 00:20:49 | | |
| 1 | SORT GROUP BY | | 922K| 139M| 300M| 104K (1)| 00:20:49 | | |
|* 2 | HASH JOIN | | 922K| 139M| 4976K| 71818 (2)| 00:14:22 | | |
| 3 | REMOTE | EMPL_INFO_DIMN | 86311 | 3961K| | 10903 (1)| 00:02:11 | ! | R->S |
|* 4 | HASH JOIN | | 923K| 97M| | 55274 (2)| 00:11:04 | | |
|* 5 | TABLE ACCESS FULL | FORM_RECIPIENT_CMPLTN_FACT | 24223 | 331K| | 698 (3)| 00:00:09 | OATP0~ | |
PLAN_TABLE_OUTPUT
| 6 | TABLE ACCESS FULL | FORM_RESP_FACT | 10M| 1013M| | 54439 (2)| 00:10:54 | OATP0~ | |
Predicate Information (identified by operation id):
2 - access("A1"."EMP_I"="A2"."EMP_I")
4 - access("A3"."CMPLTN_I"="A2"."CMPLTN_I")
5 - filter("A2"."APP_I"=20 AND "A2"."CMPLTN_I" IS NOT NULL AND "A2"."CMPLTN_C"='C')
Remote SQL Information (identified by operation id):
PLAN_TABLE_OUTPUT
3 - SELECT /*+ USE_HASH ("A1") */ "EMP_I","EMP_LAST_NME_X","EMP_1ST_NME_X" FROM "DWCSADM"."EMPL_INFO_DIMN" "A1"
(accessing '!' )
Note
- fully remote statement
31 rows selected.
Similar Messages
-
Hello every one, can I rewrite the following query without using the 'ROW_NUMBER() OVER ' part.
The query is supposed to pull out the records whose CODE is not NULL and has most
recent date for UPDATE_DATE . The reason I wanted to do this is, When I embed this query
in between many other queries along with JOINs, My oracle server is unable to execute. So, I thought
its better to supplant 'ROW_NUMBER() OVER ' logic with something else and try it. .
SELECT a.* FROM
(SELECT b.*, ROW_NUMBER() OVER (PARTITION BY b.PIDM
ORDER BY b.UPDATE_DATE DESC) AS Rno
FROM
SELECT *
FROM SHYNCRO WHERE CODE IS NOT NULL
)b
)a
WHERE a.Rno = 1Hi,
You didn't write over 150 lines of code and then start testing it, did you?
Don't.
Take baby steps. Write as little as pssiblem test that. Debug and test again until you have something that does exactly what you want it to do.
When you have somehting that works perfectly, take one baby step. Add a tiny amount of code, maybe 1 or 2 lines more, and test again.
When you do get an error, or wrong results, you'll have a much better idea of where the problem is. also, you won't be building code on a flimsy foundation.
If you need help, post the last working version and the new version with the error. Explain what you're trying to do in the new version.
The error message indicates line 133. It looks like line 133 of your code is blank. Does your front end allow completely blank lines in the middle of a query? SQL*Plus doesn't by default; you have to say
SET SQLBLANKLINES ONto have a completely blank line in SQL*Plus. (However, lines containing nothing but at commnet are always allowed.)
You may have noticed that this site normally doesn't display multiple spaces in a row.
Whenever you post formatted text (such as indented code) on this site, type these 6 characters:
\(small letters only, inside curly brackets) before and after each section of formatted text, to preserve spacing.
The 4 people who posted small code fragments for you to read all did this. It would be so much easier for people to read your humongeous query if it were formatted. -
Kindly help with rewriting the foll. query in a better way
IS there a better way of writing the foll query:
When I have 12,50,00,000 rows in Fact Table, the query is unable to execute. I use more than 200GB of temporary space. But I still get Temp Tablespace Full Error:
--Foll WITH Clause is to calculate Sum of Debit-Credit to calculate BLNC acc. to Group By values
WITH crnt_blnc_set
AS ( SELECT f.hrarchy_dmn_id,
f.prduct_dmn_id,
f.pstng_crncy_id AS crncy_dmn_id,
f.acnt_dmn_id,
f.txn_id AS txn_id,
f.acntng_entry_src AS txn_src,
f.acntng_entry_typ AS acntng_entry_typ,
f.val_dt_dmn_id,
f.revsn_dt,
SUM (
DECODE (
f.pstng_typ,
'Credit', f.pstng_amnt,
0))
- SUM (
DECODE (
f.pstng_typ,
'Debit', f.pstng_amnt,
0))
AS blnc
FROM FactTable f
GROUP BY f.hrarchy_dmn_id,
f.prduct_dmn_id,
f.pstng_crncy_id,
f.acnt_dmn_id,
f.txn_id,
f.acntng_entry_src,
f.acntng_entry_typ,
f.val_dt_dmn_id,
f.revsn_dt),
--Foll WITH Clause calculates Min and Max Date Ids for the Group By conditions as mentioned
min_mx_dt
AS ( SELECT /*+parallel(32)*/
f.hrarchy_dmn_id AS hrarchy_dmn_id,
f.prduct_dmn_id AS prduct_dmn_id,
f.crncy_dmn_id AS crncy_dmn_id,
f.acnt_dmn_id AS acnt_dmn_id,
f.txn_id AS txn_id,
f.txn_src AS txn_src,
f.acntng_entry_typ AS acntng_entry_typ,
MIN (f.val_dt_dmn_id) AS min_val_dt,
GREATEST (MAX (f.val_dt_dmn_id), 2689) AS max_val_dt
FROM crnt_blnc_set f
GROUP BY f.hrarchy_dmn_id,
f.prduct_dmn_id,
f.crncy_dmn_id,
f.acnt_dmn_id,
f.txn_id,
f.txn_src,
f.acntng_entry_typ),
/*Foll WITH Clause has a Cartesian Join on date_dmn to populate missing entries
This requirement is because if we have a distinct row for
hrarchy_dmn_id,
prduct_dmn_id,
crncy_dmn_id,
acnt_dmn_id,
txn_id,
txn_src,
acntng_entry_typ Combination and If wehave a missing entry for that in the max date provided then we actually create those missing entries*/
slctd_rcrds
AS ( SELECT /*+ ordered use_nl(d) parallel(mx, 4) */
mx.hrarchy_dmn_id AS hrarchy_dmn_id,
mx.prduct_dmn_id AS prduct_dmn_id,
mx.crncy_dmn_id AS crncy_dmn_id,
mx.acnt_dmn_id AS acnt_dmn_id,
mx.txn_id AS txn_id,
mx.txn_src AS txn_src,
mx.acntng_entry_typ AS acntng_entry_typ,
d.date_value AS val_dt,
d.date_dmn_id AS val_dt_dmn_id
FROM min_mx_dt mx, date_dmn d
WHERE mx.min_val_dt <= d.date_dmn_id
AND mx.max_val_dt >= d.date_dmn_id
--Foll. WITH clause actually has a outer Join with Firt With Clause to populate the values accordingly
cmbnd_rcrds
AS (
SELECT /*+ USE_HASH(c) */ s.hrarchy_dmn_id AS hrarchy_dmn_id,
s.prduct_dmn_id AS prduct_dmn_id,
s.crncy_dmn_id AS crncy_dmn_id,
s.acnt_dmn_id AS acnt_dmn_id,
s.txn_id AS txn_id,
s.txn_src AS txn_src,
s.acntng_entry_typ AS acntng_entry_typ,
s.val_dt_dmn_id AS val_dt_dmn_id,
NVL (c.revsn_dt, s.val_dt) AS revsn_dt,
NVL (c.blnc, 0) AS blnc,
0 AS prvs_rcrd_ind
FROM slctd_rcrds s, crnt_blnc_set c
WHERE s.hrarchy_dmn_id = c.hrarchy_dmn_id(+)
AND s.prduct_dmn_id = c.prduct_dmn_id(+)
AND s.crncy_dmn_id = c.crncy_dmn_id(+)
AND s.acnt_dmn_id = c.acnt_dmn_id(+)
AND s.txn_id = c.txn_id(+)
AND s.txn_src = c.txn_src(+)
AND s.acntng_entry_typ = c.acntng_entry_typ(+)
AND s.val_dt_dmn_id = c.val_dt_dmn_id(+))
Select * from cmbnd_rcrdsThanks for the response Alfonso. I have tried that as well. But Create Table as Also uses Temp Storage till it's created. And that again gives the same error as well.
Anyways I am now trying with a smaller set. This much piece gets executed in Half an hour but the next piece where we pivot the data is taking forever now.
That piece is as follows:
(SELECT /*+parallel(8)*/
f.hrarchy_dmn_id,
f.prduct_dmn_id,
f.crncy_dmn_id,
f.acnt_dmn_id,
f.txn_id,
f.txn_src,
f.acntng_entry_typ,
f.val_dt_dmn_id,
f.revsn_dt,
SUM (
blnc)
OVER (
PARTITION BY f.hrarchy_dmn_id,
f.prduct_dmn_id,
f.crncy_dmn_id,
f.acnt_dmn_id,
f.txn_id,
f.txn_src,
f.acntng_entry_typ
ORDER BY d.date_value)
AS crnt_blnc,
SUM (
blnc)
OVER (
PARTITION BY f.hrarchy_dmn_id,
f.prduct_dmn_id,
f.crncy_dmn_id,
f.acnt_dmn_id,
f.txn_id,
f.txn_src,
f.acntng_entry_typ,
d.fin_mnth_num
|| d.fin_year_strt
|| d.fin_year_end
ORDER BY d.date_value)
/ d.mnth_to_dt
AS mtd_avg,
SUM (
blnc)
OVER (
PARTITION BY f.hrarchy_dmn_id,
f.prduct_dmn_id,
f.crncy_dmn_id,
f.acnt_dmn_id,
f.txn_id,
f.txn_src,
f.acntng_entry_typ,
d.fin_year_strt || d.fin_year_end
ORDER BY d.date_value)
/ yr_to_dt
AS ytd_avg,
f.prvs_rcrd_ind AS prvs_rcrd_ind
FROM cmbnd_rcrds f, thor_date_dmn d
WHERE d.holidaY_ind = 0 AND f.val_dt_dmn_id = d.date_dmn_id)
SELECT f.hrarchy_dmn_id,
f.prduct_dmn_id,
f.crncy_dmn_id,
f.acnt_dmn_id,
f.txn_id AS txn_id,
f.txn_src AS acntng_entry_src,
f.acntng_entry_typ AS acntng_entry_typ,
f.val_dt_dmn_id,
f.revsn_dt,
f.crnt_blnc,
f.mtd_avg,
f.ytd_avg,
'EOD TB ETL' AS crtd_by,
SYSTIMESTAMP AS crtn_dt,
NULL AS mdfd_by,
NULL AS mdfctn_dt
FROM fnl_set f
WHERE f.prvs_rcrd_ind = 0
ORDER BY f.hrarchy_dmn_id,
f.prduct_dmn_id,
f.crncy_dmn_id,
f.acnt_dmn_id,
f.txn_id,
f.txn_src,
f.acntng_entry_typ,
f.val_dt_dmn_id
Any other way to pivot this?
Also I am getting a lot of foll wait events:
PX Deq Credit :Send blkd
PX Deq :Table Q Normal
Direct Path Write Temp
And Direct Path Read Temp. -
Rewrite the static query to dynamic SQL
Can any one please help me to write a dynamic query within a pl/sql for the following SQL??
This is for the set ('25','04'). the number of list could be n .
The column_type ranges from(1..6) and
the column_amt1 ranges from(1..6)
SELECT t.claim_no, t.cert_no, t.rec_code,
(NVL(decode(t.column_type1,'25',NVL (t.column_amt1, 0)),0)+
NVL(decode(t.column_type1,'04',NVL(t.column_amt1, 0)),0 )
+
(NVL(decode(t.column_type2,'25',NVL (t.column_amt2, 0)),0)+
NVL(decode(t.column_type2,'04',NVL(t.column_amt2, 0)),0 )
+
(NVL(decode(t.column_type3,'25',NVL (t.column_amt3, 0)),0)+
NVL(decode(t.column_type3,'04',NVL(t.column_amt3, 0)),0 )
+
(NVL(decode(t.column_type4,'25',NVL (t.column_amt4, 0)),0)+
NVL(decode(t.column_type4,'04',NVL(t.column_amt4, 0)),0 )
+
(NVL(decode(t.column_type5,'25',NVL (t.column_amt5, 0)),0)+
NVL(decode(t.column_type5,'04',NVL(t.column_amt5, 0)),0 )
+
(NVL(decode(t.column_type6,'25',NVL (t.column_amt6, 0)),0)+
NVL(decode(t.column_type6,'04',NVL(t.column_amt6, 0)),0 )) amt from test_detail t;
Thanks in Advance
Henauser11253970 wrote:
This is the part of a procedure.NowThe query is only for type '25' and '04' .It could be more in numbers in future.So I want to maintain a dynamic sql irrespective of the number of types I use.Then first thing you must do is rename column case since it is PL/SQL reserved word (I renamed it to case_id). Then you could create a couple of SQL types and a pipelined function:
CREATE OR REPLACE
TYPE test_detail_copay_obj
AS
OBJECT(
case_id char(10),
item char(9),
code char(2),
copay number(10,2)
CREATE OR REPLACE
TYPE test_detail_copay_tbl
AS
TABLE OF test_detail_copay_obj
CREATE OR REPLACE
FUNCTION test_detail_copay(p_type_list varchar2)
RETURN test_detail_copay_tbl
PIPELINED
IS
v_cur sys_refcursor;
v_copay_obj test_detail_copay_obj;
BEGIN
OPEN v_cur FOR 'select test_detail_copay_obj(case_id,
item,
code,
case
when type1 in (' || p_type_list || ') then nvl(amt1,0)
else 0
end +
case
when type2 in (' || p_type_list || ') then nvl(amt2,0)
else 0
end +
case
when type3 in (' || p_type_list || ') then nvl(amt3,0)
else 0
end +
case
when type4 in (' || p_type_list || ') then nvl(amt4,0)
else 0
end +
case
when type5 in (' || p_type_list || ') then nvl(amt5,0)
else 0
end +
case
when type6 in (' || p_type_list || ') then nvl(amt6,0)
else 0
end
from test_detail';
LOOP
FETCH v_cur
INTO v_copay_obj;
EXIT WHEN v_cur%notfound;
PIPE ROW(v_copay_obj);
END LOOP;
RETURN;
END;
/Now:
SQL> select *
2 from table(test_detail_copay('''25'',''04'''))
3 /
CASE_ID ITEM CO COPAY
EML3371015 133761570 10 355
EML3371015 133761570 10 20
EML3371015 133761570 10 5
EMC6369600 140328551 10 54
EMH6353995 140328551 11 26.04
SQL> select *
2 from table(test_detail_copay('''25'''))
3 /
CASE_ID ITEM CO COPAY
EML3371015 133761570 10 300
EML3371015 133761570 10 20
EML3371015 133761570 10 5
EMC6369600 140328551 10 0
EMH6353995 140328551 11 5.52
SQL> SY. -
How can rewrite the Query using Analytical functions ?
Hi,
I have the SQL script as shown below ,
SELECT cd.cardid, cd.cardno,TT.TRANSACTIONTYPECODE,TT.TRANSACTIONTYPEDESC DESCRIPTION,
SUM (NVL (CASE tt.transactiontypecode
WHEN 'LOAD_ACH'
THEN th.transactionamount
END, 0)
) AS load_ach,
SUM
(NVL (CASE tt.transactiontypecode
WHEN 'FUND_TRANSFER_RECEIVED'
THEN th.transactionamount
END,
0
) AS Transfersin,
( SUM (NVL (CASE tt.transactiontypecode
WHEN 'FTRNS'
THEN th.transactionamount
END,
0
) +
SUM (NVL (CASE tt.transactiontypecode
WHEN 'SEND_MONEY'
THEN th.transactionamount
END, 0)
)) AS Transferout,
SUM (NVL (CASE tt.transactiontypecode
WHEN 'WITHDRAWAL_ACH'
THEN th.transactionamount
END, 0)
) AS withdrawal_ach,
SUM (NVL (CASE tt.transactiontypecode
WHEN 'WITHDRAWAL_CHECK'
THEN th.transactionamount
END, 0)
) AS withdrawal_check,
( SUM (NVL (CASE tt.transactiontypecode
WHEN 'WITHDRAWAL_CHECK_FEE'
THEN th.transactionamount
END,
0
) +
SUM (NVL (CASE tt.transactiontypecode
WHEN 'REJECTED_ACH_LOAD_FEE'
THEN th.transactionamount
END,
0
) +
SUM (NVL (CASE tt.transactiontypecode
WHEN 'WITHDRAWAL_ACH_REV'
THEN th.transactionamount
END,
0
) +
SUM (NVL (CASE tt.transactiontypecode
WHEN 'WITHDRAWAL_CHECK_REV'
THEN th.transactionamount
END,
0
) +
SUM
(NVL (CASE tt.transactiontypecode
WHEN 'WITHDRAWAL_CHECK_FEE_REV'
THEN th.transactionamount
END,
0
) +
SUM
(NVL (CASE tt.transactiontypecode
WHEN 'REJECTED_ACH_LOAD_FEE_REV'
THEN th.transactionamount
END,
0
) +
SUM (NVL (CASE tt.transactiontypecode
WHEN 'OVERDRAFT_FEE_REV'
THEN th.transactionamount
END, 0)
) +
SUM (NVL (CASE tt.transactiontypecode
WHEN 'STOP_CHECK_FEE_REV'
THEN th.transactionamount
END,
0
) +
SUM (NVL (CASE tt.transactiontypecode
WHEN 'LOAD_ACH_REV'
THEN th.transactionamount
END, 0)
) +
SUM (NVL (CASE tt.transactiontypecode
WHEN 'OVERDRAFT_FEE'
THEN th.transactionamount
END, 0)
) +
SUM (NVL (CASE tt.transactiontypecode
WHEN 'STOP_CHECK_FEE'
THEN th.transactionamount
END, 0)
)) AS Fee,
th.transactiondatetime
FROM carddetail cd,
transactionhistory th,
transactiontype tt,
(SELECT rmx_a.cardid, rmx_a.endingbalance prev_balance, rmx_a.NUMBEROFDAYS
FROM rmxactbalreport rmx_a,
(SELECT cardid, MAX (reportdate) reportdate
FROM rmxactbalreport
GROUP BY cardid) rmx_b
WHERE rmx_a.cardid = rmx_b.cardid AND rmx_a.reportdate = rmx_b.reportdate) a
WHERE th.transactiontypeid = tt.transactiontypeid
AND cd.cardid = th.cardid
AND cd.cardtype = 'P'
AND cd.cardid = a.cardid (+)
AND CD.CARDNO = '7116734387812758335'
--AND TT.TRANSACTIONTYPECODE = 'FUND_TRANSFER_RECEIVED'
GROUP BY cd.cardid, cd.cardno, numberofdays,th.transactiondatetime,tt.transactiontypecode,TT.TRANSACTIONTYPEDESC
Ouput of the above query is :
CARDID CARDNO TRANSACTIONTYPECODE DESCRIPTION LOAD_ACH TRANSFERSIN TRANSFEROUT WITHDRAWAL_ACH WITHDRAWAL_CHECK FEE TRANSACTIONDATETIME
6005 7116734387812758335 FUND_TRANSFER_RECEIVED Fund Transfer Received 0 3.75 0 0 0 0 21/09/2007 11:15:38 AM
6005 7116734387812758335 FUND_TRANSFER_RECEIVED Fund Transfer Received 0 272 0 0 0 0 05/10/2007 9:12:37 AM
6005 7116734387812758335 WITHDRAWAL_ACH Withdraw Funds via ACH 0 0 0 300 0 0 24/10/2007 3:43:54 PM
6005 7116734387812758335 SEND_MONEY Fund Transfer Sent 0 0 1 0 0 0 19/09/2007 1:17:48 PM
6005 7116734387812758335 FUND_TRANSFER_RECEIVED Fund Transfer Received 0 1 0 0 0 0 18/09/2007 7:25:23 PM
6005 7116734387812758335 LOAD_ACH Prepaid Deposit via ACH 300 0 0 0 0 0 02/10/2007 3:00:00 AM
I want the output like for Load_ACH there should be one record etc.,
Can any one help me , how can i rewrite the above query using analytical functions .,
SekharNot sure of your requirements but this mayhelp reduce your code;
<untested>
SUM (
CASE
WHEN tt.transactiontypecode IN
('WITHDRAWAL_CHECK_FEE', 'REJECTED_ACH_LOAD_FEE', 'WITHDRAWAL_ACH_REV', 'WITHDRAWAL_CHECK_REV',
'WITHDRAWAL_CHECK_FEE_REV', 'REJECTED_ACH_LOAD_FEE_REV', 'OVERDRAFT_FEE_REV','STOP_CHECK_FEE_REV',
'LOAD_ACH_REV', 'OVERDRAFT_FEE', 'STOP_CHECK_FEE')
THEN th.transactionamount
ELSE 0) feeAlso, you might want to edit your post and use [pre] and [/pre] tags around your code for formatting. -
Rewrite the query with out joins and group by
Hi,
This was an interview question.
Table Names: bookshelf_checkout
bookshelf
And the join condition between these two tables is title
We need to rewrite below query without using join condition and group by clause ?
SELECT b.title,max(bc.returned_date - bc.checkout_date) "Most Days Out"
FROM bookshelf_checkout bc,bookshelf b
WHERE bc.title(+)=b.title
GROUP BY b.title;When I was in college, I read that most of the SELECT statements can be replaced by basic SQL operations (SET OPERATORS). Now I am trying to rewrite the query with SET operators but not able to get the exact result.
Kindly help me on this.
Thanks,
SuriSomething like this?
1 WITH books AS (
2 SELECT 'title 1' title FROM dual UNION ALL
3 SELECT 'title 2' FROM dual UNION ALL
4 SELECT 'title 3' FROM dual ),
5 bookshelf AS (
6 SELECT 'title 1' title, DATE '2012-05-01' checkout_date, DATE '2012-05-15' returned_date FROM dual UNION ALL
7 SELECT 'title 1' title, DATE '2012-05-16' checkout_date, DATE '2012-05-20' returned_date FROM dual UNION ALL
8 SELECT 'title 2' title, DATE '2012-04-01' checkout_date, DATE '2012-05-15' returned_date FROM dual )
9 SELECT bs.title, MAX(bs.returned_date - bs.checkout_date) OVER (PARTITION BY title) FROM bookshelf bs
10 UNION
11 (SELECT b.title, NULL FROM books b
12 MINUS
13* SELECT bs.title, NULL FROM bookshelf bs)
SQL> /
TITLE MAX(BS.RETURNED_DATE-BS.CHECKOUT_DATE)OVER(PARTITIONBYTITLE)
title 1 14
title 2 44
title 3Lukasz -
How to get cm:search to use the max attribute when creating the SQL query?
When we use the max attribute in the cm:search tag, it does not seem to honor the max attribute when creating the SQL query. However, the result returned from the tag is limited to the number specified by the max attribute. Then the tag seems to work as intended, but the performance will be sub optimal when the SQL query returns unnecessary rows to the application.
We use the cm:search tag to list the latest news (ordered by date), and with the current implementation we have to expect a decrease in performance over time as more news is published. But we can’t live with that. We need to do the constraint in the SQL query, not in the application.
The sortBy attribute of cm:search is translated to “order by” in the SQL query, as expected.
Is it possible to get cm:search to generate the SQL query with an addition of “where rownum <= maxRows”?Hi Erik,
The behavior of a repository in regards to the search tag's max results parameter is dependent on the underlying repository's implementation. That said, the OOTB repository in WLP does augment the generated SQL to limit the number of rows returned from the database. This is done in the parsing logic. This behavior may differ with other repository implementations.
-Ryan -
Hello
I have one query taking time to fetch the records. Table contains just 40,000 thousands records but lots of case statement in the query, I just remove lots of case statement there are lot more...
Can you please help me out to rewrite the query to fetch the records faster. Also Right now there are no indexes on the table....
SELECT O.cn,
O.BEN_LAST_NAME,
O.BEN_FIRST_NAME,
O.BEN_MI,
O.SSN,
O.DOB,
O.SEX,
CASE
WHEN O.SEX = 'F' AND O.AGE BETWEEN 00 AND 34 THEN
1
ELSE
0
END AS AGE_GROUP0_34_F,
CASE
WHEN O.SEX = 'F' AND O.AGE BETWEEN 35 AND 44 THEN
1
ELSE
0
END AS AGE_GROUP35_44_F,
CASE
WHEN O.SEX = 'F' AND O.AGE BETWEEN 45 AND 54 THEN
1
ELSE
0
END AS AGE_GROUP45_54_F,
CASE
WHEN O.SEX = 'F' AND O.AGE BETWEEN 55 AND 59 THEN
1
ELSE
0
END AS AGE_GROUP55_59_F,
CASE
WHEN O.SEX = 'F' AND O.AGE BETWEEN 60 AND 64 THEN
1
ELSE
0
END AS AGE_GROUP60_64_F,
CASE
WHEN O.SEX = 'F' AND O.AGE BETWEEN 65 AND 69 THEN
1
ELSE
0
END AS AGE_GROUP65_69_F,
CASE
WHEN O.SEX = 'F' AND O.AGE BETWEEN 70 AND 74 THEN
1
ELSE
0
END AS AGE_GROUP70_74_F,
CASE
WHEN O.SEX = 'F' AND O.AGE BETWEEN 75 AND 79 THEN
1
ELSE
0
END AS AGE_GROUP75_79_F,
CASE
WHEN O.SEX = 'F' AND O.AGE BETWEEN 80 AND 84 THEN
1
ELSE
0
END AS AGE_GROUP80_84_F,
CASE
WHEN O.SEX = 'F' AND O.AGE BETWEEN 85 AND 89 THEN
1
ELSE
0
END AS AGE_GROUP85_89_F,
CASE
WHEN O.SEX = 'F' AND O.AGE BETWEEN 90 AND 94 THEN
1
ELSE
0
END AS AGE_GROUP90_94_F,
CASE
WHEN O.SEX = 'F' AND O.AGE BETWEEN 95 AND 00 THEN
1
ELSE
0
END AS AGE_GROUP95_GT_F,
CASE
WHEN O.SEX = 'M' AND O.AGE BETWEEN 00 AND 34 THEN
1
ELSE
0
END AS AGE_GROUP0_34_M,
CASE
WHEN O.SEX = 'M' AND O.AGE BETWEEN 35 AND 44 THEN
1
ELSE
0
END AS AGE_GROUP35_44_M,
CASE
WHEN O.SEX = 'M' AND O.AGE BETWEEN 45 AND 54 THEN
1
ELSE
0
END AS AGE_GROUP45_54_M,
CASE
WHEN O.SEX = 'M' AND O.AGE BETWEEN 45 AND 59 THEN
1
ELSE
0
END AS AGE_GROUP55_59_M,
CASE
WHEN O.SEX = 'M' AND O.AGE BETWEEN 60 AND 64 THEN
1
ELSE
0
END AS AGE_GROUP60_64_M,
CASE
WHEN O.SEX = 'M' AND O.AGE BETWEEN 65 AND 69 THEN
1
ELSE
0
END AS AGE_GROUP65_69_M,
CASE
WHEN O.SEX = 'M' AND O.AGE BETWEEN 70 AND 74 THEN
1
ELSE
0
END AS AGE_GROUP70_74_M,
CASE
WHEN O.SEX = 'M' AND O.AGE BETWEEN 75 AND 79 THEN
1
ELSE
0
END AS AGE_GROUP75_79_M,
CASE
WHEN O.SEX = 'M' AND O.AGE BETWEEN 80 AND 84 THEN
1
ELSE
0
END AS AGE_GROUP80_84_M,
CASE
WHEN O.SEX = 'M' AND O.AGE BETWEEN 85 AND 89 THEN
1
ELSE
0
END AS AGE_GROUP85_89_M,
CASE
WHEN O.SEX = 'M' AND O.AGE BETWEEN 90 AND 94 THEN
1
ELSE
0
END AS AGE_GROUP90_94_M,
CASE
WHEN O.SEX = 'M' AND O.AGE BETWEEN 95 AND 00 THEN
1
ELSE
0
END AS AGE_GROUP95_GT_M,
O.YEAR,
CASE WHEN EXISTS (SELECT m1.hcc_model_category1 FROM HCC_MODEL_DIAGNOSIS M1 , HCC_MODEL_DIAGNOSIS_MAPPING HM
,mor222 m2 WHERE m1.map_id = hm.map_id_ref
AND m2.YEAR = hm.YEAR
AND o.cn = m2.cn
AND o.YEAR = hm.YEAR
AND m1.hcc_model_category1 = 1
AND m2.diag_code = m1.icd9cmscode) THEN 1 ELSE 0 END AS DISEASE_COEF_HCC1,
CASE WHEN EXISTS (SELECT m1.hcc_model_category1 FROM HCC_MODEL_DIAGNOSIS M1 , HCC_MODEL_DIAGNOSIS_MAPPING HM
,mor222 m2 WHERE m1.map_id = hm.map_id_ref
AND m2.YEAR = hm.YEAR
AND o.cn = m2.cn
AND o.YEAR = hm.YEAR
AND m1.hcc_model_category1 = 2
AND m2.diag_code = m1.icd9cmscode) THEN 1 ELSE 0 END AS DISEASE_COEF_HCC2,
CASE WHEN EXISTS (SELECT m1.hcc_model_category1 FROM HCC_MODEL_DIAGNOSIS M1 , HCC_MODEL_DIAGNOSIS_MAPPING HM
,mor222 m2 WHERE m1.map_id = hm.map_id_ref
AND m2.YEAR = hm.YEAR
AND o.cn = m2.cn
AND o.YEAR = hm.YEAR
AND m1.hcc_model_category1 = 5
AND m2.diag_code = m1.icd9cmscode) THEN 1 ELSE 0 END AS DISEASE_COEF_HCC5,
CASE WHEN EXISTS (SELECT m1.hcc_model_category1 FROM HCC_MODEL_DIAGNOSIS M1 , HCC_MODEL_DIAGNOSIS_MAPPING HM
,mor222 m2 WHERE m1.map_id = hm.map_id_ref
AND m2.YEAR = hm.YEAR
AND o.cn = m2.cn
AND o.YEAR = hm.YEAR
AND m1.hcc_model_category1 = 7
AND m2.diag_code = m1.icd9cmscode) THEN 1 ELSE 0 END AS DISEASE_COEF_HCC7,
CASE WHEN EXISTS (SELECT m1.hcc_model_category1 FROM HCC_MODEL_DIAGNOSIS M1 , HCC_MODEL_DIAGNOSIS_MAPPING HM
,mor222 m2 WHERE m1.map_id = hm.map_id_ref
AND m2.YEAR = hm.YEAR
AND o.cn = m2.cn
AND o.YEAR = hm.YEAR
AND m1.hcc_model_category1 = 8
AND m2.diag_code = m1.icd9cmscode) THEN 1 ELSE 0 END AS DISEASE_COEF_HCC8
FROM (SELECT T.cn,
T.BEN_LAST_NAME,
T.BEN_FIRST_NAME,
T.BEN_MI,
T.SSN,
TO_DATE(T.DOB, 'YYYYMMDD') AS DOB,
T.SEX,
TRUNC(MONTHS_BETWEEN(TO_DATE('01/01/' || T.YEAR, 'MM/DD/YYYY'),
TO_DATE(T.DOB, 'YYYYMMDD')) / 12) AS AGE,
T.YEAR
FROM mor111 T ) O Thanks in advance!
Kind regards,
NikOk, so I am going to be a little bit kinder then your first reply, but not much.
From what can tell you are doing medical management and are trying to select by AGE/GENDER CELLS and this is common when trying to deal with RBRVS.
This is by far some of the worst sql I have ever seen, sorry but it just is.
So please report this either as a new post or as a reply and:
1. At least post the table definitions and if you can some sample data.
2. Get rid of almost all the case selectors.
3. Describe the output you need.
As it is this is unreadable.
After that we can talk more.
Edited by: FlyingGuy on Oct 11, 2011 5:13 PM -
Help to rewrite the query --performance issue
Hi ,
Please help to rewrite the query since it's performance is not good.Especially second inline query(CASE statements are therein select caluse ..)is taking more cost.
Database Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bi
SELECT *
FROM
(SELECT q.*,
COUNT(*) OVER() AS record_count,
ROWNUM AS row_num
FROM
(SELECT ExName.examiner_code,
examiner_name,
:v_year,
:v_month,
count_fb,
NVL(count_entered_fb, 0) count_entered_fb,
NVL(count_sent_fb, 0) count_sent_fb,
NVL(count_edited_fb, 0) count_edited_fb,
NVL(count_complete_fb, 0) count_complete_fb,
NVL(count_withibcardiff_fb, 0) count_withibcardiff_fb
FROM
(SELECT examiner_code,
COUNT(*) AS count_fb
FROM
(SELECT
examiner_code,
paper_code,
assessment_school
FROM
( SELECT DISTINCT ce.examiner_code,
ce.paper_code,
ce.assessment_school
FROM
(SELECT
DISTINCT assessment_school,
paper_code,
examiner_code
FROM candidate_examiner_allocation cea
WHERE cea.element = 'Moderation of IA'
AND cea.year = :v_year
AND cea.month = :v_month
) ce,
subject_group sg,
subject_component sc
WHERE (:v_padded_examiner_code IS NULL
OR ce.examiner_code = :v_padded_examiner_code)
AND (:v_subject_group IS NULL
OR sg.group_number = :v_subject_group)
AND sg.year = :v_year
AND sg.month = :v_month
AND sc.year = :v_year
AND sc.month = :v_month
AND sc.paper_code = ce.paper_code
AND sc.subject = sg.subject
AND sc.lvl = sg.lvl
AND (:v_subject IS NULL
OR sc.subject = :v_subject)
AND (:v_lvl IS NULL
OR sc.lvl = :v_lvl)
) ea
GROUP BY examiner_code
) ExName,
(SELECT examiner_code,
COUNT(
CASE
WHEN UPPER(wfi.status) = 'ENTERED'
THEN 1
ELSE NULL
END) AS count_entered_fb,
COUNT(
CASE
WHEN UPPER(wfi.status) = 'SENT'
THEN 1
ELSE NULL
END) AS count_sent_fb,
COUNT(
CASE
WHEN UPPER(wfi.status) = 'EDITED'
THEN 1
ELSE NULL
END) AS count_edited_fb,
COUNT(
CASE
WHEN UPPER(wfi.status) = 'COMPLETE'
THEN 1
ELSE NULL
END) AS count_complete_fb,
COUNT(
CASE
WHEN UPPER(wfi.status) = 'WITH IBCARDIFF'
THEN 1
ELSE NULL
END) AS count_withibcardiff_fb
FROM ia_instances ia1,
workflow_instance wfi
WHERE wfi.instance_id = ia1.workflow_instance_id
AND ia1.year = :v_year
AND ia1.month = :v_month
GROUP BY ia1.year,
ia1.month,
examiner_code
) iaF,
(SELECT person_code,
title
|| ' '
|| firstname
|| ' '
|| lastname AS examiner_name
FROM person
WHERE :v_examiner_name IS NULL
OR UPPER(title
|| ' '
|| firstname
|| ' '
|| lastname) LIKE :v_search_examiner_name
) P
WHERE ExName.examiner_code = iaF.examiner_code (+)
AND ExName.examiner_code = p.person_code
ORDER BY ExName.examiner_code
) q
) rc
WHERE row_num >= :v_start_row
AND row_num <= (:v_start_row+(:v_max_row-1));explain plan
line 1: SQLPLUS Command Skipped: set linesize 130
line 2: SQLPLUS Command Skipped: set pagesize 0
PLAN_TABLE_OUTPUT
Plan hash value: 1581970599
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 276 | | 2187 (6)| 00:00:34 |
|* 1 | FILTER | | | | | | |
|* 2 | VIEW | | 1 | 276 | | 2187 (6)| 00:00:34 |
| 3 | WINDOW BUFFER | | 1 | 250 | | 2187 (6)| 00:00:34 |
| 4 | COUNT | | | | | | |
| 5 | VIEW | | 1 | 250 | | 2187 (6)| 00:00:34 |
| 6 | SORT ORDER BY | | 1 | 119 | | 2187 (6)| 00:00:34 |
| 7 | NESTED LOOPS | | 1 | 119 | | 2186 (6)| 00:00:34 |
|* 8 | HASH JOIN OUTER | | 1 | 92 | | 2185 (6)| 00:00:34 |
| 9 | VIEW | | 1 | 20 | | 51 (4)| 00:00:01 |
| 10 | SORT GROUP BY | | 1 | 7 | | 51 (4)| 00:00:01 |
| 11 | VIEW | | 1 | 7 | | 51 (4)| 00:00:01 |
| 12 | SORT UNIQUE | | 1 | 127 | | 51 (4)| 00:00:01 |
| 13 | NESTED LOOPS | | 1 | 127 | | 50 (2)| 00:00:01 |
|* 14 | HASH JOIN | | 1 | 68 | | 44 (3)| 00:00:01 |
|* 15 | TABLE ACCESS BY INDEX ROWID| SUBJECT_COMPONENT | 13 | 520 | | 40 (0)| 00:00:01 |
|* 16 | INDEX RANGE SCAN | SUBJECT_COMPONENT_ASSESS_TYPE | 1059 | | | 9 (0)| 00:00:01 |
|* 17 | INDEX RANGE SCAN | SUBJECT_GROUP_PK | 41 | 1148 | | 3 (0)| 00:00:01 |
|* 18 | INDEX RANGE SCAN | CEA_AUTOMATIC_ALLOCATION_STATS | 5 | 295 | | 6 (0)| 00:00:01 |
| 19 | VIEW | | 679 | 48888 | | 2133 (6)| 00:00:33 |
| 20 | SORT GROUP BY | | 679 | 25123 | | 2133 (6)| 00:00:33 |
|* 21 | HASH JOIN | | 52408 | 1893K| 1744K| 2126 (6)| 00:00:33 |
| 22 | TABLE ACCESS BY INDEX ROWID | IA_INSTANCES | 52408 | 1125K| | 688 (1)| 00:00:11 |
|* 23 | INDEX RANGE SCAN | IND_IA_INSTANCES | 49077 | | | 137 (2)| 00:00:03 |
| 24 | TABLE ACCESS FULL | WORKFLOW_INSTANCE | 1075K| 15M| | 960 (7)| 00:00:15 |
|* 25 | TABLE ACCESS BY INDEX ROWID | PERSON | 1 | 27 | | 1 (0)| 00:00:01 |
|* 26 | INDEX UNIQUE SCAN | PERSON_PK | 1 | | | 0 (0)| 00:00:01 |
Predicate Information (identified by operation id):
1 - filter(TO_NUMBER(:V_START_ROW)<=TO_NUMBER(:V_START_ROW)+(TO_NUMBER(:V_MAX_ROW)-1))
2 - filter("ROW_NUM">=TO_NUMBER(:V_START_ROW) AND "ROW_NUM"<=TO_NUMBER(:V_START_ROW)+(TO_NUMBER(:V_MAX_ROW)-1))
8 - access("EXNAME"."EXAMINER_CODE"="IAF"."EXAMINER_CODE"(+))
14 - access("SC"."SUBJECT"="SG"."SUBJECT" AND "SC"."LVL"="SG"."LVL")
15 - filter((:V_SUBJECT IS NULL OR "SC"."SUBJECT"=:V_SUBJECT) AND ("SC"."LVL"=:V_LVL OR :V_LVL IS NULL))
16 - access("SC"."YEAR"=TO_NUMBER(:V_YEAR) AND "SC"."MONTH"=:V_MONTH)
17 - access("SG"."YEAR"=TO_NUMBER(:V_YEAR) AND "SG"."MONTH"=:V_MONTH)
filter(:V_SUBJECT_GROUP IS NULL OR "SG"."GROUP_NUMBER"=TO_NUMBER(:V_SUBJECT_GROUP))
18 - access("CEA"."YEAR"=TO_NUMBER(:V_YEAR) AND "CEA"."MONTH"=:V_MONTH AND "SC"."PAPER_CODE"="PAPER_CODE" AND
"CEA"."ELEMENT"='Moderation of IA')
filter("CEA"."ELEMENT"='Moderation of IA' AND (:V_PADDED_EXAMINER_CODE IS NULL OR
"EXAMINER_CODE"=:V_PADDED_EXAMINER_CODE))
21 - access("WFI"."INSTANCE_ID"="IA1"."WORKFLOW_INSTANCE_ID")
23 - access("IA1"."YEAR"=TO_NUMBER(:V_YEAR) AND "IA1"."MONTH"=:V_MONTH)
25 - filter(:V_EXAMINER_NAME IS NULL OR UPPER("TITLE"||' '||"FIRSTNAME"||' '||"LASTNAME") LIKE :V_SEARCH_EXAMINER_NAME)
26 - access("EXNAME"."EXAMINER_CODE"="PERSON_CODE")
53 rows selectedHi,
please find the below rigjt explan paln.
PLAN_TABLE_OUTPUT
SQL_ID 2ct41vyyzqyh7, child number 0
SELECT * FROM (SELECT q.*, COUNT(*) OVER() AS record_count, ROWNUM AS row_num FROM (SELECT
ExName.examiner_code, examiner_name, :v_year, :v_month, count_fb, NVL(count_entered_fb,
0) count_entered_fb, NVL(count_sent_fb, 0) count_sent_fb, NVL(count_edited_fb, 0) count_edited_fb,
NVL(count_complete_fb, 0) count_complete_fb, NVL(count_withibcardiff_fb, 0) count_withibcardiff_fb FROM
(SELECT examiner_code, COUNT(*) AS count_fb FROM (SELECT
examiner_code, paper_code, assessment_school FROM ( SELECT DISTINCT
ce.examiner_code, ce.paper_code, ce.assessment_school FROM (SELECT
DISTINCT assessment_school,
paper_code, examiner
Plan hash value: 651311258
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | | | | 2785 (100)| |
|* 1 | FILTER | | | | | | |
|* 2 | VIEW | | 4 | 1104 | | 2785 (7)| 00:00:43 |
| 3 | WINDOW BUFFER | | 4 | 1000 | | 2785 (7)| 00:00:43 |
| 4 | COUNT | | | | | | |
| 5 | VIEW | | 4 | 1000 | | 2785 (7)| 00:00:43 |
| 6 | NESTED LOOPS | | 4 | 476 | | 2785 (7)| 00:00:43 |
| 7 | MERGE JOIN OUTER | | 4 | 368 | | 2781 (7)| 00:00:43 |
| 8 | VIEW | | 4 | 80 | | 72 (3)| 00:00:02 |
| 9 | SORT GROUP BY | | 4 | 28 | | 72 (3)| 00:00:02 |
| 10 | VIEW | | 4 | 28 | | 72 (3)| 00:00:02 |
| 11 | SORT UNIQUE | | 4 | 508 | | 72 (3)| 00:00:02 |
| 12 | NESTED LOOPS | | 4 | 508 | | 71 (2)| 00:00:02 |
|* 13 | HASH JOIN | | 1 | 68 | | 44 (3)| 00:00:01 |
|* 14 | TABLE ACCESS BY INDEX ROWID| SUBJECT_COMPONENT | 13 | 520 | | 40 (0)| 00:00:01 |
|* 15 | INDEX RANGE SCAN | SUBJECT_COMPONENT_ASSESS_TYPE | 1059 | | | 9 (0)| 00:00:01 |
|* 16 | INDEX RANGE SCAN | SUBJECT_GROUP_PK | 41 | 1148 | | 3 (0)| 00:00:01 |
|* 17 | INDEX RANGE SCAN | CEA_AUTOMATIC_ALLOCATION_STATS | 30 | 1770 | | 27 (0)| 00:00:01 |
|* 18 | SORT JOIN | | 576 | 41472 | | 2709 (7)| 00:00:42 |
| 19 | VIEW | | 576 | 41472 | | 2708 (7)| 00:00:42 |
| 20 | SORT GROUP BY | | 576 | 21312 | | 2708 (7)| 00:00:42 |
|* 21 | HASH JOIN | | 52408 | 1893K| 1744K| 2701 (7)| 00:00:41 |
|* 22 | TABLE ACCESS FULL | IA_INSTANCES | 52408 | 1125K| | 1263 (6)| 00:00:20 |
| 23 | TABLE ACCESS FULL | WORKFLOW_INSTANCE | 1075K| 15M| | 960 (7)| 00:00:15 |
|* 24 | TABLE ACCESS BY INDEX ROWID | PERSON | 1 | 27 | | 1 (0)| 00:00:01 |
|* 25 | INDEX UNIQUE SCAN | PERSON_PK | 1 | | | 0 (0)| |
Predicate Information (identified by operation id):
1 - filter(TO_NUMBER(:V_START_ROW)<=TO_NUMBER(:V_START_ROW)+(TO_NUMBER(:V_MAX_ROW)-1))
2 - filter(("ROW_NUM">=TO_NUMBER(:V_START_ROW) AND "ROW_NUM"<=TO_NUMBER(:V_START_ROW)+(TO_NUMBER(:V_MAX_ROW)-1)))
13 - access("SC"."SUBJECT"="SG"."SUBJECT" AND "SC"."LVL"="SG"."LVL")
14 - filter(((:V_SUBJECT IS NULL OR "SC"."SUBJECT"=:V_SUBJECT) AND ("SC"."LVL"=:V_LVL OR :V_LVL IS NULL)))
15 - access("SC"."YEAR"=TO_NUMBER(:V_YEAR) AND "SC"."MONTH"=:V_MONTH)
16 - access("SG"."YEAR"=TO_NUMBER(:V_YEAR) AND "SG"."MONTH"=:V_MONTH)
filter((:V_SUBJECT_GROUP IS NULL OR "SG"."GROUP_NUMBER"=TO_NUMBER(:V_SUBJECT_GROUP)))
17 - access("CEA"."YEAR"=TO_NUMBER(:V_YEAR) AND "CEA"."MONTH"=:V_MONTH AND "SC"."PAPER_CODE"="PAPER_CODE" AND
"CEA"."ELEMENT"='Moderation of IA')
filter(("CEA"."ELEMENT"='Moderation of IA' AND (:V_PADDED_EXAMINER_CODE IS NULL OR
"EXAMINER_CODE"=:V_PADDED_EXAMINER_CODE)))
18 - access("EXNAME"."EXAMINER_CODE"="IAF"."EXAMINER_CODE")
filter("EXNAME"."EXAMINER_CODE"="IAF"."EXAMINER_CODE")
21 - access("WFI"."INSTANCE_ID"="IA1"."WORKFLOW_INSTANCE_ID")
22 - filter(("IA1"."MONTH"=:V_MONTH AND "IA1"."YEAR"=TO_NUMBER(:V_YEAR)))
24 - filter((:V_EXAMINER_NAME IS NULL OR UPPER("TITLE"||' '||"FIRSTNAME"||' '||"LASTNAME") LIKE :V_SEARCH_EXAMINER_NAME))
25 - access("EXNAME"."EXAMINER_CODE"="PERSON_CODE")
66 rows selected -
Help in query to get the max(date)
Hi I have query like below and based on the query I get the following results,
SELECT a.UsageId,a.product,ProductDate
FROM dbo.table1 a
JOIN dbo.table2 b ON a.SID= b.SID
JOIN dbo.table3 c ON b.CID = c.CID
UsageId Product UsageDate
1 Yellow 2014-01-01
2 Yellow 2014-01-02
3 Yellow 2014-01-03
4 Yellow 2014-01-04
5 Red 2014-01-01
6 Red 2014-01-02
7 Blue 2014-01-03
8 Blue
2014-01-04
Now I want to add a new column which gives me the Max(UsageDate) of the column Prdouct last Usage.
UsageId Product UsageDate Max(UsageDate)
1 Yellow
2014-01-01 2014-01-04
2 Yellow
2014-01-02 2014-01-04
3 Yellow
2014-01-03 2014-01-04
4 Yellow
2014-01-04 2014-01-04
5 Red 2014-01-01 2014-01-02
6 Red 2014-01-02 2014-01-02
7 Blue
2014-01-03 2014-01-04
8 Blue
2014-01-04 2014-01-04Simply use:
SELECT a.UsageId,a.product,ProductDate, MAX(ProductDate) OVER (PARTITION BY a.ProductID) as [Latest Product Usage Date]
FROM dbo.table1 a
JOIN dbo.table2 b ON a.SID= b.SID
JOIN dbo.table3 c ON b.CID = c.CID
For every expert, there is an equal and opposite expert. - Becker's Law
My blog
My TechNet articles -
Query to print the max value of time of the latest record from table
hi
i wrote this query
which should return max fx_time of the latest or current value of fx_date
plz help
this wuery is giving current date fx_date but with all values not the max value of fx_time.
select FX_DATE, FX_TIME,FROM_CURRENCY, TO_CURRENCY, ASK_RATE, BID_RATE,
time_stamp, source,
DESCRIPTION, FX_TYPE, OVERRIDDEN_RATE, OVERRIDDEN_BY, OVERRIDDEN_DATE ,
ASK_RATE_INVERSE, BID_RATE_INVERSE, PX_LAST, PX_MID, PX_OPEN, PX_HIGH,
PX_LOW,NY_TIME_OF_LAST_PRICE_UPDATE,
DATE_OF_LAST_UPDATE, PX_BID_AM, PX_ASK_AM, PX_BID_PM, PX_ASK_PM, PX_CLOSE_1D,
CHG_NET_1D,
CHG_PCT_1D, PRICING_SOURCE, PX_BID_1M, PX_ASK_1M, PX_BID_1YR, PX_ASK_1YR,
PX_CLOSE_MTD,
PX_CLOSE_YTD, FXOPT_COMMODITY_CCY, FXOPT_SPOT_FXRATE, SPOT_RT_USD_FLAG,
PRIOR_CLOSE_BID,
PRIOR_CLOSE_MID, PRIOR_CLOSE_ASK from CURRENCY_EXCHANGE_TXN
WHERE
source='BLOOMBERG'
AND FX_DATE=
(select max(fx_date) JIM from CURRENCY_EXCHANGE_TXN
,(select max(fx_time) TIM from CURRENCY_EXCHANGE_TXN GROUP BY FX_TIME )
what change should i doHi,
Try this:
select FX_DATE, FX_TIME,FROM_CURRENCY, TO_CURRENCY, ASK_RATE, BID_RATE,
time_stamp, source,
DESCRIPTION, FX_TYPE, OVERRIDDEN_RATE, OVERRIDDEN_BY, OVERRIDDEN_DATE ,
ASK_RATE_INVERSE, BID_RATE_INVERSE, PX_LAST, PX_MID, PX_OPEN, PX_HIGH,
PX_LOW,NY_TIME_OF_LAST_PRICE_UPDATE,
DATE_OF_LAST_UPDATE, PX_BID_AM, PX_ASK_AM, PX_BID_PM, PX_ASK_PM, PX_CLOSE_1D,
CHG_NET_1D,
CHG_PCT_1D, PRICING_SOURCE, PX_BID_1M, PX_ASK_1M, PX_BID_1YR, PX_ASK_1YR,
PX_CLOSE_MTD,
PX_CLOSE_YTD, FXOPT_COMMODITY_CCY, FXOPT_SPOT_FXRATE, SPOT_RT_USD_FLAG,
PRIOR_CLOSE_BID,
PRIOR_CLOSE_MID, PRIOR_CLOSE_ASK from CURRENCY_EXCHANGE_TXN
WHERE
source='BLOOMBERG'
AND FX_DATE=
(select max(fx_date) JIM from CURRENCY_EXCHANGE_TXN
FX_TIME )
[PRE]
Please always use [ PRE ] and [ / PRE ] tags when ever posting any code.
Regards -
Hi ,
Below query is taking more time (4mins) for 41 rows returning and there is no full table scan .Can some one help to rewrite the query.
SELECT
esma.candidate AS candidate_additional_sample,
ccr.raw_mark,
ccr.split_session_year AS year,
ccr.split_session_month AS month,
ccr.paper_code,
ccr.assessment_school AS school_code,
get_cand_session_number(ccr.split_session_year,ccr.split_session_month,ccr.candidate) AS candidate_session_number,
ccr.candidate AS candidate_code,
c.firstname AS candidate_firstname,
c.lastname AS candidate_lastname,
ema.moderator_code,
ema.examiner_code,
csr.self_taught
FROM
ibis.candidate_component_reg ccr
INNER JOIN ibis.candidate_examiner_allocation cea
ON ccr.split_session_year= cea.year
AND ccr.split_session_month=cea.month
AND ccr.assessment_school=cea.assessment_school
AND ccr.paper_code= cea.paper_code
AND ccr.candidate = cea.candidate
INNER JOIN ibis.examination_paper ep
ON ccr.split_session_year= ep.year
AND ccr.split_session_month=ep.month
AND ccr.paper_code=ep.paper_code
INNER JOIN ibis.examiner_moderator_allocation ema
ON ema.year =cea.year
AND ema.month =cea.month
AND ema.no_lang_code=ep.no_lang_code
AND ema.examiner_code=cea.examiner_code
AND ema.year =ccr.split_session_year
AND ema.month =ccr.split_session_month
INNER JOIN ibis.candidate_subject_registration csr
ON ccr.split_session_year=csr.year
AND ccr.split_session_month=csr.month
AND ccr.main_school=csr.main_school
AND ccr.candidate=csr.candidate
AND ccr.subject=csr.subject
AND ccr.subject_option=csr.subject_option
AND ccr.lvl=csr.lvl
AND ccr.language=csr.language
INNER JOIN ibis.candidate c
ON ccr.candidate=c.candidate
LEFT OUTER JOIN ibis.exam_sample_mark_additional esma
ON ccr.split_session_year = esma.year
AND ccr.split_session_month = esma.month
AND ep.no_lang_code = esma.nolang_code
AND ccr.candidate = esma.candidate
WHERE
ccr.split_session_year=:v_year
AND ccr.split_session_month=:v_month
AND ccr.subject=:v_subject
AND ccr.subject_option=nvl(:v_subject_option,ccr.subject_option)
AND ccr.language=nvl(:v_language, ccr.language)
AND ccr.component=:v_component
AND ccr.lvl=:v_lvl
AND ccr.raw_mark IS NOT NULL
AND cea.examiner_code = :v_examiner_code
AND ((ccr.sampled='Y'
AND csr.self_taught='N'
AND EXISTS (SELECT 1 FROM ibis.subject_component sc
WHERE sc.assessment_method_id = 11
AND sc.assessment_type='INTERNAL'
AND ccr.split_session_year=sc.year
AND ccr.split_session_month=sc.month
AND ccr.paper_code=sc.paper_code
AND ccr.subject=sc.subject
AND ccr.subject_option=sc.subject_option
AND ccr.lvl=sc.lvl
AND ccr.language=sc.language
AND ccr.component=sc.component)
AND NOT EXISTS (SELECT 1 FROM ibis.cw_portfolio_template cpt
WHERE ccr.split_session_year = cpt.year
AND ccr.split_session_month = cpt.month
AND ccr.subject = cpt.subject
AND ccr.subject_option = cpt.subject_option
AND ccr.component = cpt.component
AND cpt.combined = 'Y')
AND NOT EXISTS (SELECT 1 FROM ibis.school_sample_mark ssm
WHERE ssm.year= ccr.split_session_year
AND ssm.month = ccr.split_session_month
AND ssm.paper_code = ccr.paper_code
AND ssm.candidate =ccr.candidate
AND ssm.examiner_sample = 'Y'))
OR (ccr.sampled='N'
AND csr.self_taught='Y'
AND EXISTS (SELECT 1 FROM ibis.subject_component sc
WHERE sc.assessment_method_id = 11
AND ccr.split_session_year=sc.year
AND ccr.split_session_month=sc.month
AND ccr.paper_code=sc.paper_code
AND ccr.subject=sc.subject
AND ccr.subject_option=sc.subject_option
AND ccr.lvl=sc.lvl
AND ccr.language=sc.language
AND ccr.component=sc.component)
AND NOT EXISTS (SELECT 1 FROM ibis.cw_portfolio_template cpt
WHERE ccr.split_session_year = cpt.year
AND ccr.split_session_month = cpt.month
AND ccr.subject = cpt.subject
AND ccr.subject_option = cpt.subject_option
AND ccr.component = cpt.component
AND cpt.combined = 'Y'))
OR (ccr.sampled='N'
AND EXISTS (SELECT 1 FROM ibis.subject_component sc
WHERE sc.assessment_method_id = 11
AND ccr.split_session_year=sc.year
AND ccr.split_session_month=sc.month
AND ccr.paper_code=sc.paper_code
AND ccr.subject=sc.subject
AND ccr.subject_option=sc.subject_option
AND ccr.lvl=sc.lvl
AND ccr.language=sc.language
AND ccr.component=sc.component)
AND EXISTS (SELECT 1 FROM ibis.cw_portfolio_template cpt
WHERE ccr.split_session_year = cpt.year
AND ccr.split_session_month = cpt.month
AND ccr.subject = cpt.subject
AND ccr.subject_option = cpt.subject_option
AND ccr.component = cpt.component
AND cpt.combined = 'Y')));
explain plan
line 1: SQLPLUS Command Skipped: set linesize 130
line 2: SQLPLUS Command Skipped: set pagesize 0
PLAN_TABLE_OUTPUT
Plan hash value: 2594643366
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 2 | 1036 | 34 (3)| 00:00:01 |
|* 1 | FILTER | | | | | |
|* 2 | HASH JOIN OUTER | | 2 | 1036 | 34 (3)| 00:00:01 |
| 3 | VIEW | | 2 | 974 | 32 (0)| 00:00:01 |
| 4 | CONCATENATION | | | | | |
|* 5 | FILTER | | | | | |
|* 6 | TABLE ACCESS BY INDEX ROWID | CANDIDATE_SUBJECT_REGISTRATION | 1 | 58 | 3 (0)| 00:00:01 |
| 7 | NESTED LOOPS | | 1 | 485 | 16 (0)| 00:00:01 |
| 8 | NESTED LOOPS | | 1 | 427 | 13 (0)| 00:00:01 |
| 9 | NESTED LOOPS | | 1 | 357 | 11 (0)| 00:00:01 |
| 10 | NESTED LOOPS | | 1 | 129 | 8 (0)| 00:00:01 |
| 11 | NESTED LOOPS | | 1 | 80 | 5 (0)| 00:00:01 |
|* 12 | INDEX RANGE SCAN | PK_EXAMINER_MODERATOR_ALLOC | 1 | 39 | 3 (0)| 00:00:01 |
|* 13 | INDEX RANGE SCAN | RFL_EP1 | 1 | 41 | 2 (0)| 00:00:01 |
| 14 | TABLE ACCESS BY INDEX ROWID| CANDIDATE_EXAMINER_ALLOCATION | 1 | 49 | 3 (0)| 00:00:01 |
|* 15 | INDEX RANGE SCAN | CANDIDATE_ALLOCATION_EXAMINER | 1 | | 2 (0)| 00:00:01 |
|* 16 | TABLE ACCESS BY INDEX ROWID | CANDIDATE_COMPONENT_REG | 1 | 228 | 3 (0)| 00:00:01 |
|* 17 | INDEX RANGE SCAN | SPLIT_SESSION_CANDIDATE | 1 | | 2 (0)| 00:00:01 |
| 18 | TABLE ACCESS BY INDEX ROWID | CANDIDATE | 1 | 70 | 2 (0)| 00:00:01 |
|* 19 | INDEX UNIQUE SCAN | CANDIDATE_PK | 1 | | 1 (0)| 00:00:01 |
|* 20 | INDEX RANGE SCAN | Y_M_CAND_SUBJ_LVL_OPTION | 1 | | 2 (0)| 00:00:01 |
|* 21 | FILTER | | | | | |
|* 22 | TABLE ACCESS BY INDEX ROWID | CANDIDATE_SUBJECT_REGISTRATION | 1 | 58 | 3 (0)| 00:00:01 |
| 23 | NESTED LOOPS | | 1 | 485 | 16 (0)| 00:00:01 |
| 24 | NESTED LOOPS | | 1 | 427 | 13 (0)| 00:00:01 |
| 25 | NESTED LOOPS | | 1 | 357 | 11 (0)| 00:00:01 |
| 26 | NESTED LOOPS | | 1 | 129 | 8 (0)| 00:00:01 |
| 27 | NESTED LOOPS | | 1 | 80 | 5 (0)| 00:00:01 |
|* 28 | INDEX RANGE SCAN | PK_EXAMINER_MODERATOR_ALLOC | 1 | 39 | 3 (0)| 00:00:01 |
|* 29 | INDEX RANGE SCAN | RFL_EP1 | 1 | 41 | 2 (0)| 00:00:01 |
| 30 | TABLE ACCESS BY INDEX ROWID| CANDIDATE_EXAMINER_ALLOCATION | 1 | 49 | 3 (0)| 00:00:01 |
|* 31 | INDEX RANGE SCAN | CANDIDATE_ALLOCATION_EXAMINER | 1 | | 2 (0)| 00:00:01 |
|* 32 | TABLE ACCESS BY INDEX ROWID | CANDIDATE_COMPONENT_REG | 1 | 228 | 3 (0)| 00:00:01 |
|* 33 | INDEX RANGE SCAN | SPLIT_SESSION_CANDIDATE | 1 | | 2 (0)| 00:00:01 |
| 34 | TABLE ACCESS BY INDEX ROWID | CANDIDATE | 1 | 70 | 2 (0)| 00:00:01 |
|* 35 | INDEX UNIQUE SCAN | CANDIDATE_PK | 1 | | 1 (0)| 00:00:01 |
|* 36 | INDEX RANGE SCAN | Y_M_CAND_SUBJ_LVL_OPTION | 1 | | 2 (0)| 00:00:01 |
|* 37 | INDEX RANGE SCAN | EXAM_SAMP_MARK_ADD_IOT_PK | 36 | 1116 | 1 (0)| 00:00:01 |
|* 38 | TABLE ACCESS BY INDEX ROWID | CW_PORTFOLIO_TEMPLATE | 1 | 46 | 4 (0)| 00:00:01 |
|* 39 | INDEX RANGE SCAN | YEAR_MON_PORTFOLIO_TEMPLATE | 1 | | 3 (0)| 00:00:01 |
|* 40 | TABLE ACCESS BY INDEX ROWID | SCHOOL_SAMPLE_MARK | 1 | 34 | 4 (0)| 00:00:01 |
|* 41 | INDEX RANGE SCAN | CAND_PAPER_YEAR_MONTH | 1 | | 3 (0)| 00:00:01 |
|* 42 | TABLE ACCESS BY INDEX ROWID | SUBJECT_COMPONENT | 1 | 96 | 4 (0)| 00:00:01 |
|* 43 | INDEX RANGE SCAN | SUBJECT_COMPONENT_PK | 1 | | 3 (0)| 00:00:01 |
|* 44 | TABLE ACCESS BY INDEX ROWID | CW_PORTFOLIO_TEMPLATE | 1 | 46 | 4 (0)| 00:00:01 |
|* 45 | INDEX RANGE SCAN | YEAR_MON_PORTFOLIO_TEMPLATE | 1 | | 3 (0)| 00:00:01 |
|* 46 | TABLE ACCESS BY INDEX ROWID | SUBJECT_COMPONENT | 1 | 87 | 4 (0)| 00:00:01 |
|* 47 | INDEX RANGE SCAN | SUBJECT_COMPONENT_PK | 1 | | 3 (0)| 00:00:01 |
|* 48 | TABLE ACCESS BY INDEX ROWID | SUBJECT_COMPONENT | 1 | 87 | 4 (0)| 00:00:01 |
|* 49 | INDEX RANGE SCAN | SUBJECT_COMPONENT_PK | 1 | | 3 (0)| 00:00:01 |
|* 50 | TABLE ACCESS BY INDEX ROWID | CW_PORTFOLIO_TEMPLATE | 1 | 46 | 4 (0)| 00:00:01 |
|* 51 | INDEX RANGE SCAN | YEAR_MON_PORTFOLIO_TEMPLATE | 1 | | 3 (0)| 00:00:01 |
Predicate Information (identified by operation id):
1 - filter("from$_subquery$_011"."SAMPLED"='Y' AND "from$_subquery$_011"."SELF_TAUGHT"='N' AND NOT EXISTS
(SELECT /*+ */ 0 FROM "IBIS"."CW_PORTFOLIO_TEMPLATE" "CPT" WHERE "CPT"."COMPONENT"=:B1 AND
"CPT"."SUBJECT_OPTION"=:B2 AND "CPT"."SUBJECT"=:B3 AND "CPT"."MONTH"=:B4 AND "CPT"."YEAR"=:B5 AND
"CPT"."COMBINED"='Y') AND NOT EXISTS (SELECT /*+ */ 0 FROM "IBIS"."SCHOOL_SAMPLE_MARK" "SSM" WHERE
"SSM"."MONTH"=:B6 AND "SSM"."YEAR"=:B7 AND "SSM"."PAPER_CODE"=:B8 AND "SSM"."CANDIDATE"=:B9 AND
"SSM"."EXAMINER_SAMPLE"='Y') AND EXISTS (SELECT /*+ */ 0 FROM "IBIS"."SUBJECT_COMPONENT" "SC" WHERE
"SC"."COMPONENT"=:B10 AND "SC"."SUBJECT_OPTION"=:B11 AND "SC"."LANGUAGE"=:B12 AND "SC"."LVL"=:B13 AND
"SC"."SUBJECT"=:B14 AND "SC"."MONTH"=:B15 AND "SC"."YEAR"=:B16 AND "SC"."PAPER_CODE"=:B17 AND
"SC"."ASSESSMENT_METHOD_ID"=11 AND "SC"."ASSESSMENT_TYPE"='INTERNAL') OR "from$_subquery$_011"."SAMPLED"='N'
AND "from$_subquery$_011"."SELF_TAUGHT"='Y' AND NOT EXISTS (SELECT /*+ */ 0 FROM
"IBIS"."CW_PORTFOLIO_TEMPLATE" "CPT" WHERE "CPT"."COMPONENT"=:B18 AND "CPT"."SUBJECT_OPTION"=:B19 AND
"CPT"."SUBJECT"=:B20 AND "CPT"."MONTH"=:B21 AND "CPT"."YEAR"=:B22 AND "CPT"."COMBINED"='Y') AND EXISTS (SELECT
/*+ */ 0 FROM "IBIS"."SUBJECT_COMPONENT" "SC" WHERE "SC"."COMPONENT"=:B23 AND "SC"."SUBJECT_OPTION"=:B24 ANDEdited byCan you please post the following scripts:
1. Tables structure (with all indexes & constraints)
2. Tables data
3. SQL trace file
possibly everything that one can need to regenerate the scenario on his own DB...
OR
spend some time with Oracle Docs on Performance Tuning and then resolve it yourself.
Regards,
Ankit Rathi
http://theoraclelog.blogspot.in -
SQL Query to retrieve the All records based on the Max Dates.
Hello all,
I am trying to retrieve the newest record based on the date field ( nextDate ).
Currently there are only 4 records in the MC_Maintenance table and two in the Machine table.
Machine table
MC_id EquipID
1 0227
MC_id EquipID
2 0228
MC_Maintenance table
Maint_id MC_id Next_maint
1 2 08/25/2010
2 2 07/01/2010
3 1 06/11/2010
4 1 07/11/2010
What I am trying to accomplish is,
list the two machines from the Machine table with the MAX(Next_maint) controlling the MC_Maintenance output list
These are the records that I would like to Display.
Maint_id MC_id Next_maint
1 2 08/25/2010
4 1 07/11/2010
Below is the SQL Query
SELECT
MC.MC_ID as ID,
MC.complete_Date as completed,
MC.next_maint as nextDate,
MC.maint_notes as Notes,
MC.facility as Facility,
M.EquipId,
M.name as name,
M.SerialNumber as SN,
M.dept as dept,
M.Freq as freq
From MC_Maintenance MC, Machine M
where MC.MC_ID = M.MC_ID
' USING MAX(nextDate )
Any ideas would help.
TJI would have thought that was a simple group by problem?
SELECT M.EquipID, MC.MC_ID, Max(MC.next_maint)
FROM MC_Maintenance MC INNER JOIN Machine M ON MC.MC_ID = M.MC_ID
GROUP BY M.EquipID, MC.MC_ID -
Query - Filter by a specific dynamic date - Return only the max date record
Hello experts,
I'm building a query. In this query I have a filter named validity date. I need to select a record where the max date is less than this filter.
For example:
Comp. Code | Plant | Mat. | Cost Type | Valid. Date | Value
0000000001 00001 0001 xxxxxxxx 12.05.2008 2,00
0000000001 00001 0001 xxxxxxxx 09.05.2008 1,00
0000000001 00001 0001 xxxxxxxx 05.05.2008 0,50
If the user set 13.05.2008 in the filter, the report should return:
0000000001 00001 0001 xxxxxxxx 12.05.2008 2,00
If the user set 11.05.2008 in the filter, the report should return:
0000000001 00001 0001 xxxxxxxx 09.05.2008 1,00
If the user set 08.05.2008 in the filter, the report should return:
0000000001 00001 0001 xxxxxxxx 05.05.2008 0,50
The problem is that the date will be dynamic and I'll need to return just one line for a combination of Company Code, Plant, Material and Cost Type. First of all I would like to know the best way to do it. Do I need to use virtual key figure? If so, anyone could tell me some steps to do it?
Thanks in advance,
HelderNot Virtual KeyFigure.
You can achieve this with Restricted KeyFigure with the restriction with CalDay (Variable) which user input while Running the Query. Its more like a Bucket. SAP Delivered Buckets Query is in the below link. Check that query you will understand better about Bucket.
http://help.sap.com/saphelp_nw04/helpdata/en/40/94af39a3488979e10000000a11402f/content.htm
If not clear try to Install the BC Query and play with that you will know better.
Thanks
Sriram -
hi ,
Actual i write the query like this , and run this query in sql developer ,
it will take more than 15 mins
alloc_details table -- 2 lac records
doc_details -- 2 lac records
query :
SELECT
a.activity
, sum( a.lamt ) lamt
, sum( a.lamt ) camt
FROM
alloc_detail a
WHERE
a.alc_code <>'JOB'
And a.alc_value is not null
And EXISTS ( SELECT
distinct b.doc_no
FROM
doc_detail b
WHERE
a.org=b.org
And a.doc_no=b.doc_no
And a.doc_type=b.doc_type
And ( b.dr_act_code='11111' OR b.cr_act_code='111111')
And ( ( trunc( b.doc_date ) >='01-jan-08' ) )
And ( ( trunc( b.doc_date ) <= '31-jan-08' ) )
GROUP BY
a.alc_value
Anyother way to rewrite the query .Is this query working? a.activity seems to be a "not a group by expression"
select a.activity,sum(a.lamt) lamt,sum(a.lamt) camt /* 2 times same sum - a typo ? */
from alloc_detail a
where a.alc_code != 'JOB' /* not equal presumed */
and a.alc_value is not null
and exists(select distinct b.doc_no
from doc_detail b
where a.org = b.org
and a.doc_no = b.doc_no
and a.doc_type = b.doc_type
and (b.dr_act_code = '11111' or b.cr_act_code = '111111')
and trunc(b.doc_date) >= '01-jan-08'
and trunc(b.doc_date) <= '31-jan-08'
group by a.alc_valuehow about applying predicates first
select a.alc_value,sum(a.lamt) lamt,sum(a.camt) camt
from (select alc_value,lamt,camt,org,doc_no,doc_type
from alloc_detail
where alc_code != 'JOB'
and alc_value is not null
) a,
(select distinct org,doc_no,doc_type
from doc_detail
where doc_date >= to_date('01-jan-08','dd-mon-rr')
and doc_date <= to_date('31-jan-08','dd-mon-rr') + 1 - 1/24/60/60
and (dr_act_code = '11111' or cr_act_code = '111111')
) b
where a.org = b.org
and a.doc_no = b.doc_no
and a.doc_type = b.doc_type
group by a.alc_valueRegards
Etbin
Maybe you are looking for
-
Reading email within the borders?
Love my new Droid Maxx BUtT my email go OFF the sides I have to scroll from side to side to read....Is there a setting to keep email in Left and Right borders? Thanks DaveAlan
-
Kernel Upgrade Impact on ABAP perspective ?
We are planning for Kernel upgrade. I like to know what kind of impact on ABAP point of view. My question is after the upgrade what are things i may needs to check from abaper perspective ? I don't know is right to ask this question in abap general f
-
IBook G4 slowdown with find and sort
My wife's iBook frequently decides to slow down to a mere crawl, and it sounds like the hard drive (I think) is working steadily during these spells. Looking at the processes w/ top, find seems to be sucking up heaps of CPU time. I tried killing the
-
Daughter can't download on her "computer"
Using Mac OS 10.3.9 on an iMac, all four family members are set up with admin privileges. But one daughter can't download a pdf or file. She keeps getting the error message "Cannot create file". All of the other users can download. It's only on user
-
Safari keeps crashing on me unexpectedly. I use Saft as a plugin, and recently looked at Safari Extender and then uninstalled it. My crashing problems seem to stem from that time, but I can't pinpoint it. I have attached the Safari Crash log for a ty