Sql Query Start_Date
Hi,
I want to retrieve the data using the condition Start_Date ='10/04/2008 12:30:29'
User Allow Start_Date
1 Y '10/04/2008 12:30:29'
2 Y '10/04/2008 12:32:29'
3 N '10/04/2008 12:34:59'
4 Y '10/04/2008 12:38:19'
5 N '10/04/2008 12:40:29'
I want to know the counts from 12:30 to 12:35
Assuming a date column, then this should work.
with my_tab as (select 1 user_id, 'Y' allowed, to_date('10/04/2008 12:30:29', 'dd/mm/yyyy hh24:mi:ss') start_date from dual union all
select 2 user_id, 'Y' allowed, to_date('10/04/2008 12:32:29', 'dd/mm/yyyy hh24:mi:ss') start_date from dual union all
select 3 user_id, 'N' allowed, to_date('10/04/2008 12:34:59', 'dd/mm/yyyy hh24:mi:ss') start_date from dual union all
select 4 user_id, 'Y' allowed, to_date('10/04/2008 12:38:19', 'dd/mm/yyyy hh24:mi:ss') start_date from dual union all
select 5 user_id, 'N' allowed, to_date('10/04/2008 12:40:29', 'dd/mm/yyyy hh24:mi:ss') start_date from dual)
-- end of test data setup
select trunc(start_date, 'hh') + floor(to_char(start_date, 'mi')/5)*5/1440 start_date_range,
count(*)
from my_tab
group by trunc(start_date, 'hh') + floor(to_char(start_date, 'mi')/5)*5/1440
order by trunc(start_date, 'hh') + floor(to_char(start_date, 'mi')/5)*5/1440Message was edited by:
Boneist
Amended to easier way of working out the 5 mins than with a case statement!
Similar Messages
-
SQL Query produces different results when inserting into a table
I have an SQL query which produces different results when run as a simple query to when it is run as an INSERT INTO table SELECT ...
The query is:
SELECT mhldr.account_number
, NVL(MAX(DECODE(ap.party_sysid, mhldr.party_sysid,ap.empcat_code,NULL)),'UNKNWN') main_borrower_status
, COUNT(1) num_apps
FROM app_parties ap
SELECT accsta.account_number
, actply.party_sysid
, RANK() OVER (PARTITION BY actply.table_sysid, actply.loanac_latype_code ORDER BY start_date, SYSID) ranking
FROM activity_players actply
, account_status accsta
WHERE 1 = 1
AND actply.table_id (+) = 'ACCGRP'
AND actply.acttyp_code (+) = 'MHLDRM'
AND NVL(actply.loanac_latype_code (+),TO_NUMBER(SUBSTR(accsta.account_number,9,2))) = TO_NUMBER(SUBSTR(accsta.account_number,9,2))
AND actply.table_sysid (+) = TO_NUMBER(SUBSTR(accsta.account_number,1,8))
) mhldr
WHERE 1 = 1
AND ap.lenapp_account_number (+) = TO_NUMBER(SUBSTR(mhldr.account_number,1,8))
GROUP BY mhldr.account_number; The INSERT INTO code:
TRUNCATE TABLE applicant_summary;
INSERT /*+ APPEND */
INTO applicant_summary
( account_number
, main_borrower_status
, num_apps
SELECT mhldr.account_number
, NVL(MAX(DECODE(ap.party_sysid, mhldr.party_sysid,ap.empcat_code,NULL)),'UNKNWN') main_borrower_status
, COUNT(1) num_apps
FROM app_parties ap
SELECT accsta.account_number
, actply.party_sysid
, RANK() OVER (PARTITION BY actply.table_sysid, actply.loanac_latype_code ORDER BY start_date, SYSID) ranking
FROM activity_players actply
, account_status accsta
WHERE 1 = 1
AND actply.table_id (+) = 'ACCGRP'
AND actply.acttyp_code (+) = 'MHLDRM'
AND NVL(actply.loanac_latype_code (+),TO_NUMBER(SUBSTR(accsta.account_number,9,2))) = TO_NUMBER(SUBSTR(accsta.account_number,9,2))
AND actply.table_sysid (+) = TO_NUMBER(SUBSTR(accsta.account_number,1,8))
) mhldr
WHERE 1 = 1
AND ap.lenapp_account_number (+) = TO_NUMBER(SUBSTR(mhldr.account_number,1,8))
GROUP BY mhldr.account_number; When run as a query, this code consistently returns 2 for the num_apps field (for a certain group of accounts), but when run as an INSERT INTO command, the num_apps field is logged as 1. I have secured the tables used within the query to ensure that nothing is changing the data in the underlying tables.
If I run the query as a cursor for loop with an insert into the applicant_summary table within the loop, I get the same results in the table as I get when I run as a stand alone query.
I would appreciate any suggestions for what could be causing this odd behaviour.
Cheers,
Steve
Oracle database details:
Oracle Database 10g Release 10.2.0.2.0 - Production
PL/SQL Release 10.2.0.2.0 - Production
CORE 10.2.0.2.0 Production
TNS for 32-bit Windows: Version 10.2.0.2.0 - Production
NLSRTL Version 10.2.0.2.0 - Production
Edited by: stevensutcliffe on Oct 10, 2008 5:26 AM
Edited by: stevensutcliffe on Oct 10, 2008 5:27 AMstevensutcliffe wrote:
Yes, using COUNT(*) gives the same result as COUNT(1).
I have found another example of this kind of behaviour:
Running the following INSERT statements produce different values for the total_amount_invested and num_records fields. It appears that adding the additional aggregation (MAX(amount_invested)) is causing problems with the other aggregated values.
Again, I have ensured that the source data and destination tables are not being accessed / changed by any other processes or users. Is this potentially a bug in Oracle?Just as a side note, these are not INSERT statements but CTAS statements.
The only non-bug explanation for this behaviour would be a potential query rewrite happening only under particular circumstances (but not always) in the lower integrity modes "trusted" or "stale_tolerated". So if you're not aware of any corresponding materialized views, your QUERY_REWRITE_INTEGRITY parameter is set to the default of "enforced" and your explain plan doesn't show any "MAT_VIEW REWRITE ACCESS" lines, I would consider this as a bug.
Since you're running on 10.2.0.2 it's not unlikely that you hit one of the various "wrong result" bugs that exist(ed) in Oracle. I'm aware of a particular one I've hit in 10.2.0.2 when performing a parallel NESTED LOOP ANTI operation which returned wrong results, but only in parallel execution. Serial execution was showing the correct results.
If you're performing parallel ddl/dml/query operations, try to do the same in serial execution to check if it is related to the parallel feature.
You could also test if omitting the "APPEND" hint changes anything but still these are just workarounds for a buggy behaviour.
I suggest to consider installing the latest patch set 10.2.0.4 but this requires thorough testing because there were (more or less) subtle changes/bugs introduced with [10.2.0.3|http://oracle-randolf.blogspot.com/2008/02/nasty-bug-introduced-with-patch-set.html] and [10.2.0.4|http://oracle-randolf.blogspot.com/2008/04/overview-of-new-and-changed-features-in.html].
You could also open a SR with Oracle and clarify if there is already a one-off patch available for your 10.2.0.2 platform release. If not it's quite unlikely that you are going to get a backport for 10.2.0.2.
Regards,
Randolf
Oracle related stuff blog:
http://oracle-randolf.blogspot.com/
SQLTools++ for Oracle (Open source Oracle GUI for Windows):
http://www.sqltools-plusplus.org:7676/
http://sourceforge.net/projects/sqlt-pp/ -
Best way to spool DYNAMIC SQL query to file from PL/SQL
Best way to spool DYNAMIC SQL query to file from PL/SQL [Package], not SqlPlus
I'm looking for suggestions on how to create an output file (fixed width and comma delimited) from a SELECT that is dynamically built. Basically, I've got some tables that are used to define the SELECT and to describe the output format. For instance, one table has the SELECT while another is used to defined the column "formats" (e.g., Column Order, Justification, FormatMask, Default value, min length, ...). The user has an app that they can use to customize the output...which leaving the gathering of the data untouched. I'm trying to keep this formatting and/or default logic out of the actual query. This lead me into a problem.
Example query :
SELECT CONTRACT_ID,PV_ID,START_DATE
FROM CONTRACT
WHERE CONTRACT_ID = <<value>>Customization Table:
CONTRACT_ID : 2,Numeric,Right
PV_ID : 1,Numeric,Mask(0000)
START_DATE : 3,Date,Mask(mm/dd/yyyy)The first value is the kicker (ColumnOrder) as well as the fact that the number of columns is dynamic. Technically, if I could use SqlPlus...then I could just use SPOOL. However, I'm not.
So basically, I'm trying to build a generic routine that can take a SQL string execute the SELECT and map the output using data from another table to a file.
Any suggestions?
Thanks,
JasonYou could build the select statement within PL/SQL and open it using a cursor variable. You could write it to a file using the package 'UTL_FILE'. If you want to display the output using SQL*Plus, you could have an out parameter as a ref cursor.
-
Hi all,
i have table with following fields start_time, end_time
and data is 25/01/2010 12:00,25/01/2010 12:48
i am running a sql query to get info about time spent
Select end_time - start_time
from table
but it is giving .033333333
I want follwing result
time_spent
00:48 min
please helpOmy,
The solution I gave above had an error. The hours and minutes component both had the difference in them.
That would have been useful if you only needed the hours component (2) or the minutes component (150 minutes-- 2 hours and 30 minutes..).
To make sure we get only the hours component and minutes component in the respecive sections, we can make use of the mod function..
1 select start_date,
2 end_date,
3 (end_date-start_date) usual_diff,
4 trunc(end_date-start_date) || ' days ' ||
5 mod(trunc((end_date-start_date)*24),24) || ' hours ' ||
6 mod(trunc((end_date-start_date)*24*60),60) || ' minutes ' ||
7 mod(trunc((end_date-start_date)*24*60*60),60) || 'Seconds ' diff
8* from t2
sql> /
START_DATE END_DATE USUAL_DIFF DIFF
25-JAN-2010 03:00:00 26-JAN-2010 05:30:00 1.10416667 1 days 2 hours 30 minutes 0Seconds
--Including the display format for time...
1 select start_date,
2 end_date,
3 (end_date-start_date) usual_diff,
4 trunc(end_date-start_date) || ' days ' ||
5 to_char(mod(trunc((end_date-start_date)*24),24),'09') || ':' ||
6 to_char(mod(trunc((end_date-start_date)*24*60),60),'09') || ':' ||
7 to_char(mod(trunc((end_date-start_date)*24*60*60),60),'09') diff
8* from t2
sql> /
START_DATE END_DATE USUAL_DIFF DIFF
25-JAN-2010 03:00:00 26-JAN-2010 05:30:00 1.10416667 1 days 02: 30: 00Did you try using the numtods interval..? Is there a reason you prefer the manual method over the numtodsinterval function? -
Error in SQl Query - SQl Command not properly ended
Hi All
I have this SQL query that returns the following error when I run it in TOAD:
SELECT
VC.CAMPAIGN_NUMBER,VC.CAMPAIGN_TITLE,VC.CAMPAIGN_DESC,
VCV.START_DATE, VCV.END_DATE,VC.CAMPAIGN_TYPE,VC.APPLICABILITY,
VC.CAMPAIGN_PRIORITY
FROM
VM_CAMPAIGN_VIN VCV ,VM_CAMPAIGN VC
WHERE
VCV.VIN = 'US'
AND
VCV.CAMPAIGN_NUMBER = VC.CAMPAIGN_NUMBER AND VC.COUNTRY_CODE = 'E'
AND VC.LANGUAGE_CODE = 'L' AND VC.CAMPAIGN_TYPE = null
AND SYSDATE BETWEEN VCV.START_DATE AND VCV.END_DATE
AND SYSDATE BETWEEN VC.START_DATE AND VC.END_DATE)
A ORDER BY A.CAMPAIGN_PRIORITY DESC, A.END_DATE
The error is:
SQl Command not properly ended
Any help is highly appreciated. ThanksThanks a lot to everyone. It helped me run the query without any problem. Now I have another issue. This may not be the right place to post this question, I think.My apologies for that. The problem is, Weblogic posts an error as follows:
java.sql.SQLException: ORA-00923: FROM keyword not found where expected
I am wondering if this is an Java related error or an SQL related error.
Well, I am using the SQL Statement which you helped debug, and it is inside something called "XXSQLConstants.java consisting of the following SQL statement:
public static final String XX_ALL_CAMPS_SELECT = "SELECT * FROM" +
"(SELECT vc.campaign_number, vc.campaign_title, vc.campaign_desc, vc.start_date," +
"vc.end_date, vc.campaign_type, vc.applicability, vc.campaign_priority" +
"FROM vm_campaign vc" +
"WHERE vc.applicability = 'Y'" +
"AND vc.country_code = ? " +
"AND vc.language_code = ? " +
"AND vc.campaign_type = ? "+
"AND SYSDATE BETWEEN vc.start_date AND vc.end_date" +
"AND NOT EXISTS (" +
"SELECT 'X'" +
"FROM vm_campaign_vin vcv" +
"WHERE (vcv.vin = ? " +
"AND vcv.campaign_number = vc.campaign_number" +
"))" +
"UNION" +
"SELECT vc.campaign_number, vc.campaign_title, vc.campaign_desc," +
"vcv.start_date, vcv.end_date, vc.campaign_type, vc.applicability," +
"vc.campaign_priority" +
"FROM vm_campaign_vin vcv, vm_campaign vc" +
"WHERE vcv.vin = ? " +
"AND vcv.campaign_number = vc.campaign_number" +
"AND vc.country_code = ? " +
"AND vc.language_code = ? " +
"AND vc.campaign_type IS NULL" +
"AND SYSDATE BETWEEN vcv.start_date AND vcv.end_date" +
"AND SYSDATE BETWEEN vc.start_date AND vc.end_date)";
The SQl runs fine when tested (well, it does not return any data for the rows returned, but there are no errors), but in my application server I get the following error (pointing out the same SQL code pasted above:
java.sql.SQLException: ORA-00923: FROM keyword not found where expected
Any suggestions? Thanks in advance. I appreciate all replies -
Performance Problem with SQL Query
Hi
I have a SQL Query (say, SSS) which runs quite fast when I run it from TOAD.
But when the same query is being used as
INSERT INTO <table> VALUES <SSS>;
It is taking hours to complete.
The Original Query(OSQ) was changed to this SQL query(SSS) for Performance improvement.
The Cost has also improved quite a lot from OSQ to SSS. But when SSS runs from inside a procedure it is taking the same long hours as OSQ used to take.
Please help ASAP as it needs to get fixed.
Thanks
ArnabSELECT SRM.ID PROJECT_ID,
SRM.UNIQUE_NAME PROJECT_CODE,
ODFP.GS_FINANCE_PROJ_CODE,
ODFP.GS_PRODUCT_CODE,
ODFP.GS_CUSTOMER,
ODFP.GS_LEGAL_ENT_REF,
ODF_PRJ_TYPE.NAME GS_PROJ_TYPE,
ODF_SRC_SYS.NAME GS_SOURCE_SYSTEM,
RESM.FIRST_NAME||' '||RESM.LAST_NAME GS_PROJECT_MANAGER,
ODFP.GS_LEG_PROJ_NUM,
ODFP.GS_SUPP_DOC ,
ODFP.GS_REQUEST_ID ,
ODFP.GS_CONTRACT ,
ODFP.GS_SIEBEL_REF,
DECODE(budg.ODF_PARENT_ID,NULL,PRJP.bdgt_cst_total, budg.lab_budg)LAB_BDGT,
DECODE(budg.ODF_PARENT_ID,NULL,0,budg.nli_budg)NLI_BDGT,
(DECODE(budg.ODF_PARENT_ID,NULL,PRJP.bdgt_cst_total, budg.lab_budg))+(DECODE(budg.ODF_PARENT_ID,NULL,0,budg.nli_budg)) sum_lab_nonlab_budg,
frct.LABOUR,
frct.NON_LABOUR,
frct.LABOUR+frct.NON_LABOUR FORCAST_TOT_SUM,
gfr.code GFR_CODE,
odfp.gs_rev_recognition,
rev_rec.NAME gs_rev_recognition,
DECODE(odfp.gs_prevent_reqtxn,1,'YES','0','NO','NO'),
GS_PROGTYPE.NAME,
COMM_APPR.UNIQUE_NAME COMM_APPROVER_EIN,
COMM_APPR.FIRST_NAME||' '||COMM_APPR.LAST_NAME COMM_APPROVER_NAME,
PR_APPR.UNIQUE_NAME PR_APPROVER_EIN,
PR_APPR.FIRST_NAME||' '||PR_APPR.LAST_NAME PR_APPROVER_NAME,
ODFP.GS_BILL_BUD,
frct.FRCST_REVENUE TOTAL_FRC_REVENUE,
actuals.LABOUR_ACTUALS,
actuals.NL_ACTUALS,
-- get_wip_totalcost(prjp.prid,'L') LABOUR_ACTUALS,
-- get_wip_totalcost(prjp.prid,'M') NL_ACTUALS,
ODFP.GS_ASS_PRODUCT_CODE,
PROJ_TEMPLATE.ID GS_PROJ_TEMPLATE_ID,
PROJ_TEMPLATE.UNIQUE_NAME GS_PROJ_TEMPLATE_CODE,
PROJ_TEMPLATE.name GS_PROJ_TEMPLATE_NAME,
DECODE( NVL(ODFP.GS_FIN_TEMPLATE,0) ,0,'NO',1,'YES') GS_FIN_TEMPLATE,
ODF_PRJ_TYPE.LOOKUP_CODE GS_PROJ_TYPE
FROM PROJECTS SRM,
J_PROJECTS PRJP,
A_PROJECT ODFP,
RESOURCES RESM,
s_gfr gfr,
RESOURCES PROJ_ACCT,
RESOURCES COMM_APPR,
RESOURCES PR_APPR,
(SELECT CAP.NAME
,LOOKUP.LOOKUP_CODE
FROM S_NLS CAP,
N_LOOKUPS LOOKUP
WHERE LOOKUP_TYPE ='GS_PROJECT_TYPE'
AND LOOKUP.ID =CAP.PK_ID
AND CAP.LANGUAGE_CODE='en'
AND CAP.TABLE_NAME = 'CMN_LOOKUPS') ODF_PRJ_TYPE,
(SELECT CAP.NAME
,LOOKUP.LOOKUP_CODE
FROM S_NLS CAP,
N_LOOKUPS LOOKUP
WHERE LOOKUP_TYPE ='GS_SOURCE_SYSTEM'
AND LOOKUP.ID =CAP.PK_ID
AND CAP.LANGUAGE_CODE='en'
AND CAP.TABLE_NAME = 'CMN_LOOKUPS') ODF_SRC_SYS,
(SELECT CAP.NAME
,LOOKUP.LOOKUP_CODE
FROM S_NLS CAP,
N_LOOKUPS LOOKUP
WHERE LOOKUP_TYPE ='GS_PROG_TYPE'
AND LOOKUP.ID =CAP.PK_ID
AND CAP.LANGUAGE_CODE='en'
AND CAP.TABLE_NAME = 'CMN_LOOKUPS')GS_PROGTYPE,
(SELECT odf_parent_id
,SUM(gs_lab_budg) lab_budg
,SUM(gs_nl_budg) nli_budg
FROM T_CHANGES
WHERE gs_status='APPR'
GROUP BY odf_parent_id) budg,
(SELECT CAP.NAME
,LOOKUP.LOOKUP_CODE
FROM S_NLS CAP,
N_LOOKUPS LOOKUP
WHERE LOOKUP_TYPE ='GS_REV_RECOGNITION'
AND LOOKUP.ID = CAP.PK_ID
AND CAP.LANGUAGE_CODE='en'
AND CAP.TABLE_NAME = 'CMN_LOOKUPS') rev_rec,
(SELECT FRCP1.project_id,
NVL(SUM(CASE WHEN srmr.resource_type=0 THEN for_val.cost ELSE NULL END),0) AS LABOUR,
NVL(SUM(CASE WHEN srmr.resource_type <> 0 THEN for_val.cost ELSE NULL END),0) AS NON_LABOUR,
NVL(SUM(for_val.revenue),0) AS FRCST_REVENUE
FROM T_PROPERTIES FRCP1,
T_DETAILS FOR_DET,
RESOURCES SRMR,
T_VALUES FOR_VAL
WHERE (FRCP1.project_id, revision) IN (SELECT project_id, MAX(revision)
FROM T_PROPERTIES FRCP
WHERE FRCP.status=2
AND FRCP.PERIOD_TYPE='SEMI_MONTHLY'
GROUP BY project_id)
AND FRCP1.PERIOD_TYPE='SEMI_MONTHLY'
AND FOR_DET.forecast_id=frcp1.id
AND SRMR.id(+)=FOR_DET.detail_id
AND FOR_VAL.currency_type='BILLING'
AND FOR_VAL.forecast_details_id=FOR_DET.ID
GROUP BY FRCP1.project_id) frct,
(SELECT srmp.id
,NVL(SUM(CASE WHEN wip.transtype='L' THEN WIPVAL.TOTALCOST ELSE NULL END),0) AS LABOUR_ACTUALS
,NVL(SUM(CASE WHEN wip.transtype='M' THEN WIPVAL.TOTALCOST ELSE NULL END),0) AS NL_ACTUALS
FROM A_WIP WIP
,om_periods biz
,P_VALUES WIPVAL
,PROJECTS SRMP
,A_PROJECT ODF
WHERE biz.period_type ='SEMI_MONTHLY'
AND TRUNC(wip.TRANSDATE) BETWEEN biz.start_date AND biz.end_date
AND WIP.TRANSNO=WIPVAL.TRANSNO
AND WIPVAL.CURRENCY_TYPE='BILLING'
AND SRMP.UNIQUE_NAME=WIP.PROJECT_CODE
AND SRMP.ID=ODF.ID
AND UPPER(ODF.partition_code)='GLOBAL'
AND UPPER(WIP.external_id) <> 'SPREADSHEET'
GROUP BY srmp.id) actuals,
RESOURCES BUD_HOLDER,
PROJECTS PROJ_TEMPLATE
WHERE SRM.ID = PRJP.PRID
AND ODFP.ID=PRJP.PRID
AND ODFP.PARTITION_CODE='GLOBAL'
AND RESM.id(+)=prjp.manager_id
AND ODFP.GS_PROJECT_TYPE = ODF_PRJ_TYPE.LOOKUP_CODE(+)
AND ODFP.GS_SOURCE_SYSTEM = ODF_SRC_SYS.LOOKUP_CODE(+)
AND ODFP.GS_prog_type = GS_PROGTYPE.LOOKUP_CODE(+)
AND budg.odf_parent_id(+)=SRM.ID
AND frct.project_id(+) = prjp.prid
AND ODFP.gs_risk_gfr=gfr.code(+)
AND ODFP.GS_REV_RECOGNITION=rev_rec.LOOKUP_CODE(+)
AND ODFP.GS_PROJ_ACCT = PROJ_ACCT.ID(+)
AND ODFP.GS_COMM_APPR = COMM_APPR.ID(+)
AND ODFP.GS_PR_APPR = PR_APPR.ID(+)
AND actuals.id(+) = prjp.prid -- Arnab
AND ODFP.GS_BUDGET_HOLDER=BUD_HOLDER.ID(+)
AND ODFP.GS_TEMPLATE_USED=PROJ_TEMPLATE.ID(+)
The above is OSQ with cost 45000. ... takes 1-1.5 hours through Toad
SELECT SRM.ID PROJECT_ID,
SRM.UNIQUE_NAME PROJECT_CODE,
ODFP.GS_FINANCE_PROJ_CODE,
ODFP.GS_PRODUCT_CODE,
ODFP.GS_CUSTOMER,
ODFP.GS_LEGAL_ENT_REF,
ODF_PRJ_TYPE.NAME GS_PROJ_TYPE,
ODF_SRC_SYS.NAME GS_SOURCE_SYSTEM,
RESM.FIRST_NAME||' '||RESM.LAST_NAME GS_PROJECT_MANAGER,
ODFP.GS_LEG_PROJ_NUM,
ODFP.GS_SUPP_DOC ,
ODFP.GS_REQUEST_ID ,
ODFP.GS_CONTRACT ,
ODFP.GS_SIEBEL_REF,
DECODE(budg.ODF_PARENT_ID,NULL,PRJP.bdgt_cst_total, budg.lab_budg)LAB_BDGT,
DECODE(budg.ODF_PARENT_ID,NULL,0,budg.nli_budg)NLI_BDGT,
(DECODE(budg.ODF_PARENT_ID,NULL,PRJP.bdgt_cst_total, budg.lab_budg))+(DECODE(budg.ODF_PARENT_ID,NULL,0,budg.nli_budg)) sum_lab_nonlab_budg,
frct.LABOUR,
frct.NON_LABOUR,
frct.LABOUR+frct.NON_LABOUR FORCAST_TOT_SUM,
gfr.code GFR_CODE,
odfp.gs_rev_recognition,
rev_rec.NAME gs_rev_recognition,
DECODE(odfp.gs_prevent_reqtxn,1,'YES','0','NO','NO'),
GS_PROGTYPE.NAME,
COMM_APPR.UNIQUE_NAME COMM_APPROVER_EIN,
COMM_APPR.FIRST_NAME||' '||COMM_APPR.LAST_NAME COMM_APPROVER_NAME,
PR_APPR.UNIQUE_NAME PR_APPROVER_EIN,
PR_APPR.FIRST_NAME||' '||PR_APPR.LAST_NAME PR_APPROVER_NAME,
ODFP.GS_BILL_BUD,
frct.FRCST_REVENUE TOTAL_FRC_REVENUE,
-- actuals.LABOUR_ACTUALS, -- Arnab
-- actuals.NL_ACTUALS, -- Arnab
get_wip_totalcost(prjp.prid,'L') LABOUR_ACTUALS, -- Arnab
get_wip_totalcost(prjp.prid,'M') NL_ACTUALS, -- Arnab
ODFP.GS_ASS_PRODUCT_CODE,
PROJ_TEMPLATE.ID GS_PROJ_TEMPLATE_ID,
PROJ_TEMPLATE.UNIQUE_NAME GS_PROJ_TEMPLATE_CODE,
PROJ_TEMPLATE.name GS_PROJ_TEMPLATE_NAME,
DECODE( NVL(ODFP.GS_FIN_TEMPLATE,0) ,0,'NO',1,'YES') GS_FIN_TEMPLATE,
ODF_PRJ_TYPE.LOOKUP_CODE GS_PROJ_TYPE
FROM PROJECTS SRM,
J_PROJECTS PRJP,
A_PROJECT ODFP,
RESOURCES RESM,
s_gfr gfr,
RESOURCES PROJ_ACCT,
RESOURCES COMM_APPR,
RESOURCES PR_APPR,
(SELECT CAP.NAME
,LOOKUP.LOOKUP_CODE
FROM S_NLS CAP,
N_LOOKUPS LOOKUP
WHERE LOOKUP_TYPE ='GS_PROJECT_TYPE'
AND LOOKUP.ID =CAP.PK_ID
AND CAP.LANGUAGE_CODE='en'
AND CAP.TABLE_NAME = 'CMN_LOOKUPS') ODF_PRJ_TYPE,
(SELECT CAP.NAME
,LOOKUP.LOOKUP_CODE
FROM S_NLS CAP,
N_LOOKUPS LOOKUP
WHERE LOOKUP_TYPE ='GS_SOURCE_SYSTEM'
AND LOOKUP.ID =CAP.PK_ID
AND CAP.LANGUAGE_CODE='en'
AND CAP.TABLE_NAME = 'CMN_LOOKUPS') ODF_SRC_SYS,
(SELECT CAP.NAME
,LOOKUP.LOOKUP_CODE
FROM S_NLS CAP,
N_LOOKUPS LOOKUP
WHERE LOOKUP_TYPE ='GS_PROG_TYPE'
AND LOOKUP.ID =CAP.PK_ID
AND CAP.LANGUAGE_CODE='en'
AND CAP.TABLE_NAME = 'CMN_LOOKUPS')GS_PROGTYPE,
(SELECT odf_parent_id
,SUM(gs_lab_budg) lab_budg
,SUM(gs_nl_budg) nli_budg
FROM T_CHANGES
WHERE gs_status='APPR'
GROUP BY odf_parent_id) budg,
(SELECT CAP.NAME
,LOOKUP.LOOKUP_CODE
FROM S_NLS CAP,
N_LOOKUPS LOOKUP
WHERE LOOKUP_TYPE ='GS_REV_RECOGNITION'
AND LOOKUP.ID = CAP.PK_ID
AND CAP.LANGUAGE_CODE='en'
AND CAP.TABLE_NAME = 'CMN_LOOKUPS') rev_rec,
(SELECT FRCP1.project_id,
NVL(SUM(CASE WHEN srmr.resource_type=0 THEN for_val.cost ELSE NULL END),0) AS LABOUR,
NVL(SUM(CASE WHEN srmr.resource_type <> 0 THEN for_val.cost ELSE NULL END),0) AS NON_LABOUR,
NVL(SUM(for_val.revenue),0) AS FRCST_REVENUE
FROM T_PROPERTIES FRCP1,
T_DETAILS FOR_DET,
RESOURCES SRMR,
T_VALUES FOR_VAL
WHERE (FRCP1.project_id, revision) IN (SELECT project_id, MAX(revision)
FROM T_PROPERTIES FRCP
WHERE FRCP.status=2
AND FRCP.PERIOD_TYPE='SEMI_MONTHLY'
GROUP BY project_id)
AND FRCP1.PERIOD_TYPE='SEMI_MONTHLY'
AND FOR_DET.forecast_id=frcp1.id
AND SRMR.id(+)=FOR_DET.detail_id
AND FOR_VAL.currency_type='BILLING'
AND FOR_VAL.forecast_details_id=FOR_DET.ID
GROUP BY FRCP1.project_id) frct,
/* (SELECT srmp.id
,NVL(SUM(CASE WHEN wip.transtype='L' THEN WIPVAL.TOTALCOST ELSE NULL END),0) AS LABOUR_ACTUALS
,NVL(SUM(CASE WHEN wip.transtype='M' THEN WIPVAL.TOTALCOST ELSE NULL END),0) AS NL_ACTUALS
FROM A_WIP WIP
,om_periods biz
,P_VALUES WIPVAL
,PROJECTS SRMP
,A_PROJECT ODF
WHERE biz.period_type ='SEMI_MONTHLY'
AND TRUNC(wip.TRANSDATE) BETWEEN biz.start_date AND biz.end_date
AND WIP.TRANSNO=WIPVAL.TRANSNO
AND WIPVAL.CURRENCY_TYPE='BILLING'
AND SRMP.UNIQUE_NAME=WIP.PROJECT_CODE
AND SRMP.ID=ODF.ID
AND UPPER(ODF.partition_code)='GLOBAL'
AND UPPER(WIP.external_id) <> 'SPREADSHEET'
GROUP BY srmp.id) actuals, */ -- Arnab
RESOURCES BUD_HOLDER,
PROJECTS PROJ_TEMPLATE
WHERE SRM.ID = PRJP.PRID
AND ODFP.ID=PRJP.PRID
AND ODFP.PARTITION_CODE='GLOBAL'
AND RESM.id(+)=prjp.manager_id
AND ODFP.GS_PROJECT_TYPE = ODF_PRJ_TYPE.LOOKUP_CODE(+)
AND ODFP.GS_SOURCE_SYSTEM = ODF_SRC_SYS.LOOKUP_CODE(+)
AND ODFP.GS_prog_type = GS_PROGTYPE.LOOKUP_CODE(+)
AND budg.odf_parent_id(+)=SRM.ID
AND frct.project_id(+) = prjp.prid
AND ODFP.gs_risk_gfr=gfr.code(+)
AND ODFP.GS_REV_RECOGNITION=rev_rec.LOOKUP_CODE(+)
AND ODFP.GS_PROJ_ACCT = PROJ_ACCT.ID(+)
AND ODFP.GS_COMM_APPR = COMM_APPR.ID(+)
AND ODFP.GS_PR_APPR = PR_APPR.ID(+)
AND actuals.id(+) = prjp.prid Arnab
AND ODFP.GS_BUDGET_HOLDER=BUD_HOLDER.ID(+)
AND ODFP.GS_TEMPLATE_USED=PROJ_TEMPLATE.ID(+)
This one in SSS where "-- Arnab " are only changes .....
The cost of this 7000.....finishes in 1 - 1.5 min in Toad
This is used as INSERT INTO TABLE <Select Query> ... this was taking 1.5 Hours to run.
It was changed using BULK COLLECT - still its taking around 1.5 hours to run...
Thanks
Arnab -
Hello all,
I have a table that contains more than 100 000 records, structure seen below. I am trying to perform simple queries on this table and it is taking FOREVER for the query to return (in excess of 10 minutes). The only field that contains unique data is the 'key', which I have made the primary key.
Table: WORK
Name Null? Type
ASSIGNMENT_NO NOT NULL NUMBER(2)
START_DATE NOT NULL DATE
END_DATE DATE
ID_NO NOT NULL NUMBER(9)
CODE NOT NULL VARCHAR2(4)
REF_KEY NOT NULL NUMBER(9)
STATUS NOT NULL VARCHAR2(1)
ID_NAME NOT NULL VARCHAR2(30)
LAST_MODIFIED_DATE NOT NULL DATE
KEY NOT NULL NUMBER(9)
As I need to pass into the query varying data I Use a PL/SQL function to call the SQL query.
CREATE OR REPLACE FUNCTION THE_SAMPLE (THE_REF_KEY, THE_ID_NO, PUT_A_DATE_HERE)
RETURN VARCHAR2 IS
CURSOR C IS
SELECT w1.code
FROM work w1
WHERE w1.ref_key = THE_REF_KEY
AND w1.ID_NO = THE_ID_NO
AND w1.status <> 'I'
AND w1.start_date <= PUT_A_DATE_HERE
AND (w1.end_date IS NULL or w1.end_date >= PUT_A_DATE_HERE)
AND w1.start_date = (SELECT MAX(W2.start_date)
FROM work w2
WHERE w2.REF_KEY = W1.REF_KEY
AND w2.ID_NO = W1.ID_NO
AND w2.status <> 'I'
AND w2.start_date <= PUT_A_DATE_HERE
AND (w2.end_date IS NULL or w2.end_date >= PUT_A_DATE_HERE));
out_rec c%ROWTYPE;
begin
begin
open C;
fetch c into out_rec;
CLOSE C;
EXCEPTION
WHEN no_data_found THEN
out_rec.code := NULL;
END;
return out_rec.code;
end THE_SAMPLE;
I am looking for a quick way to accomplish the same task. The main reason is that I am feeding this SQL statement about 20 000 different ref_keys each with a particular ID_NO. Since it seems to take a long time just to process one element I did want crunch data for the next month.
Any help, idea, comments would be greatly welcomed.
Any ideas on how to stream line this?Hummm... I am still working on it, but this is what I have come up with so far:
One way is to do this use this
CURSOR C IS
SELECT w1.code
FROM work w1, (SELECT MAX(w2.start_date) as MAX_DATE
FROM work w2
WHERE w2.ref_key = THE_REF_KEY
AND w2.ID_NO = THE_ID_NO
and w2.status <> 'I'
AND w2.start_date <= PUT_A_DATE_HERE
AND (w2.end_date IS NULL or w2.end_date >= PUT_A_DATE_HERE)) GET_MAX
WHERE w1.ref_key = THE_REF_KEY
AND w1.ID_NO = THE_ID_NO
and w1.status <> 'I'
AND w1.start_date <= PUT_A_DATE_HERE
AND (w1.end_date IS NULL or w1.end_date >= PUT_A_DATE_HERE)
AND w1.start_date = GET_MAX.MAX_DATE;
This way does seem to work a bit faster. I will have to see as the hours pass by.
I am still looking for ways that will process this faster.
null -
Hi,
Can i fork a sql query........that means a single query will fetch data from multiple tables (having same data) parallely and individually.is it possible in oracle database level???
rgds
somythe simplest way is to create a job with Oracle Dbms_scheduler Procedure for each of your statements:
Dbms_scheduler.CREATE_JOB
(job_name =>’JOB_1’,
program_name =>’fork1’,
start_date =>’23.06.2008 12:00’,
The best way is to use a Perl Script or a Workflow Engine, in Example "Oracle Workflow".
Georg -
Hi All,
I need help to get a sql query for included dates
I have this scenario
create table test (names varchar2(100),start_date date,end_date date,exc_flg number);
insert into test values('John',to_date('01-jan-2009','dd-mon-yyyy'),to_date('31-dec-2011','dd-mon-yyyy'),0);
insert into test values('John',to_date('01-jan-2009','dd-mon-yyyy'),to_date('31-dec-2010','dd-mon-yyyy'),1);
insert into test values('Joseph',to_date('01-jan-2009','dd-mon-yyyy'),to_date('31-dec-2011','dd-mon-yyyy'),0);
insert into test values('Jack',to_date('01-jan-2009','dd-mon-yyyy'),to_date('31-dec-2010','dd-mon-yyyy'),0);
In the above case john is included for this duration start_date is '01-jan-2009' and end_date is '31-dec-2011' and is excluded for this duration '01-jan-2009','31-dec-2010'
Now i want to dispay John's incuded duration as ''01-jan-2011','31-dec-2011'
My sql output should be
Names start_date end_date
John 01-jan-2011 31-dec-2011
Joseph 01-jan-2009 31-dec-2011
Jack 01-jan-2009 31-dec-2010
Thanks in AdvanceHi there,
seems like the old "find those time gaps" problem. I tried to solve it in pure SQL, and since it's Monday I didn't want to wrap my mind around the MODEL clause,
therefore my solution looks a bit cluttered - feel free to improve.
create table test (names varchar2(100),start_date date,end_date date,exc_flg number);
INSERT INTO TEST VALUES('John',to_date('01-01-2009','dd-mm-yyyy'),to_date('31-12-2011','dd-mm-yyyy'),0);
INSERT INTO TEST VALUES('John',to_date('01-01-2009','dd-mm-yyyy'),to_date('31-12-2010','dd-mm-yyyy'),1);
INSERT INTO TEST VALUES('John',to_date('01-04-2011','dd-mm-yyyy'),to_date('01-07-2011','dd-mm-yyyy'),1);
INSERT INTO TEST VALUES('Joseph',to_date('01-01-2009','dd-mm-yyyy'),to_date('31-12-2011','dd-mm-yyyy'),0);
INSERT INTO TEST VALUES('Jack',to_date('01-01-2009','dd-mm-yyyy'),to_date('31-12-2010','dd-mm-yyyy'),0);
INSERT INTO TEST VALUES('Joe',to_date('01-01-2009','dd-mm-yyyy'),to_date('31-12-2011','dd-mm-yyyy'),0);
INSERT INTO TEST VALUES('Joe',to_date('01-04-2010','dd-mm-yyyy'),to_date('31-12-2011','dd-mm-yyyy'),0);
INSERT INTO TEST VALUES('Joe',to_date('01-01-2008','dd-mm-yyyy'),to_date('31-12-2009','dd-mm-yyyy'),1);
select * from test;
WITH t AS (SELECT names
, 's' flg_date
, start_date dat
FROM TEST
WHERE exc_flg = 0
UNION ALL
SELECT names
, 'e'
, end_date
FROM TEST
WHERE exc_flg = 0
UNION ALL
SELECT names
, 's'
, end_date + 1
FROM TEST
WHERE exc_flg = 1
UNION ALL
SELECT names
, 'e'
, start_date - 1
FROM TEST
WHERE exc_flg = 1
, t2 AS (SELECT t.*
, DECODE(LAG(t.flg_date) OVER (PARTITION BY t.names ORDER BY t.dat), flg_date, 0, NULL, 1, 1) grp_date
FROM t
WHERE NOT EXISTS (SELECT 1
FROM TEST t2
WHERE t2.names = t.names
AND exc_flg = 1
AND t.dat BETWEEN t2.start_date AND t2.end_date)
AND t.dat BETWEEN (SELECT MIN(start_date)
FROM TEST t2
WHERE t2.names = t.names
AND exc_flg = 0)
AND (SELECT MAX(end_date)
FROM TEST t2
WHERE t2.names = t.names
AND exc_flg = 0)
, t3 AS (SELECT t2.names
, t2.flg_date
, t2.dat
, SUM(grp_date) OVER (PARTITION BY t2.names ORDER BY t2.dat) grp_date
FROM t2
, t4 AS (SELECT t3.*
, row_number() OVER (PARTITION BY t3.names, t3.grp_date ORDER BY t3.dat) rn_start_date
, row_number() OVER (PARTITION BY t3.names, t3.grp_date ORDER BY t3.dat DESC) rn_end_date
FROM t3
SELECT names
, dat
, nxt_dat
FROM (SELECT t4.names
, dat
, CASE WHEN t4.flg_date = 's' THEN LEAD(dat) OVER (PARTITION BY t4.names ORDER BY t4.dat) END nxt_dat
FROM t4
WHERE (t4.flg_date = 's' AND rn_start_date = 1)
OR (t4.flg_date = 'e' AND rn_end_date = 1)
WHERE nxt_dat IS NOT NULL
ORDER BY names, dat
NAMES DAT NXT_DAT
Jack 2009.01.01 00:00:00 2010.12.31 00:00:00
Joe 2010.01.01 00:00:00 2011.12.31 00:00:00
John 2011.01.01 00:00:00 2011.03.31 00:00:00
John 2011.07.02 00:00:00 2011.12.31 00:00:00
Joseph 2009.01.01 00:00:00 2011.12.31 00:00:00C. -
Change my sql query where-clause in an extended controller
Hello,
i am trying to change my sql query where-clause in an extended controller
personAplListVO.setWhereClause(null); // first set to null
personAplListVO.setWhereClauseParams(null); // first set to null
personAplListVO.setWhereClause(personAplListVOWhereClause +
newWhereClause);
personAplListVO.setWhereClauseParams(whereClauseParams);
personAplListVO.executeQuery();
System.out.println(">>>>>>>>getQuery = " + personAplListVO.getQuery());
when i get the query ( personAplListVO.getQuery()) after executeQuery(), the new newWhereClause values are missing.
Also i am getting null from personAplListVO.getWhereClause() after executeQuery()
as if the above code is not making any effect.
any ideas why?
Thank youHello,
My Query:
/* Formatted on 2011/06/15 15:50 (Formatter Plus v4.8.8) */
SELECT /*+ FIRST_ROWS */
NULL AS selectflag, ppf.full_name AS person_name,
ppf.first_name AS person_first_name, ppf.last_name AS person_last_name,
ppf.email_address, addr.derived_locale, addr.address_id,
phn.phone_number, phn.phone_id, ppf.date_of_birth, addr.address_line1,
(SELECT COUNT (*)
FROM per_all_assignments_f paf2,
per_all_people_f ppf2
WHERE paf2.assignment_type = 'A'
AND :1 BETWEEN paf2.effective_start_date AND paf2.effective_end_date
AND paf2.person_id = ppf2.person_id
AND paf2.effective_start_date BETWEEN ppf2.effective_start_date
AND ppf2.effective_end_date
AND ppf2.party_id = ppf.party_id
HAVING COUNT (*) > 0) AS jobs_applied_for,
(SELECT MAX (paf.effective_start_date)
FROM per_all_assignments_f paf,
per_all_people_f ppf2
WHERE paf.assignment_type = 'A'
AND :2 >= paf.effective_start_date
AND paf.person_id = ppf2.person_id
AND paf.effective_start_date BETWEEN ppf2.effective_start_date
AND ppf2.effective_end_date
AND ppf2.party_id = ppf.party_id) AS last_application,
ppf.person_id, ppf.effective_start_date, ppf.effective_end_date,
DECODE (vac.manager_id, :3, 'Y', 'N') AS my_applicants,
vac.NAME AS vacancy_name, vac.vacancy_id, paf.assignment_id,
(SELECT /*+ push_subq */
MIN (pasf.effective_start_date)
FROM per_all_assignments_f pasf
WHERE pasf.assignment_id = paf.assignment_id) AS application_date,
paf.effective_end_date AS assignment_end_date,
ast.user_status AS application_status, ast.assignment_status_type_id,
vac.status AS vacancy_status, mgr.full_name AS recruiting_manager,
mgr.person_id AS recruiting_manager_id,
mgr.effective_start_date AS effective_start_date1,
mgr.effective_end_date AS effective_end_date1,
rec.full_name AS recruiter, rec.person_id AS recruiter_id,
rec.effective_start_date AS effective_start_date2,
rec.effective_end_date AS effective_end_date2,
ppf.per_information_category, ppf.per_information1,
ppf.per_information2, ppf.per_information3, ppf.per_information4,
ppf.per_information5, ppf.per_information6, ppf.per_information7,
ppf.per_information8, ppf.per_information9, ppf.per_information10,
ppf.per_information11, ppf.per_information12, ppf.per_information13,
ppf.per_information14, ppf.per_information15, ppf.per_information16,
ppf.per_information17, ppf.per_information18, ppf.per_information19,
ppf.per_information20, ppf.per_information21, ppf.per_information22,
ppf.per_information23, ppf.per_information24, ppf.per_information25,
ppf.per_information26, ppf.per_information27, ppf.per_information28,
ppf.per_information29, ppf.per_information30,
FLOOR
(irc_location_utility.sdo_miles (iwp.geometry, loc.geometry, 0.01)
) AS distance_to_location,
loc.location_id, loc.derived_locale AS derived_locale1,
doc.document_id, doc.file_name,
NVL2 (doc.document_id, 'Y', 'N') AS previewenabled,
inp.notification_preference_id, ppf.attribute_category, ppf.attribute1,
ppf.attribute2, ppf.attribute3, ppf.attribute4, ppf.attribute5,
ppf.attribute6, ppf.attribute7, ppf.attribute8, ppf.attribute9,
ppf.attribute10, ppf.attribute11, ppf.attribute12, ppf.attribute13,
ppf.attribute14, ppf.attribute15, ppf.attribute16, ppf.attribute17,
ppf.attribute18, ppf.attribute19, ppf.attribute20, ppf.attribute21,
ppf.attribute22, ppf.attribute23, ppf.attribute24, ppf.attribute25,
ppf.attribute26, ppf.attribute27, ppf.attribute28, ppf.attribute29,
ppf.attribute30, TO_CHAR (ROWNUM) AS rownumber,
TO_CHAR
((irc_utilities_pkg.get_recruitment_person_id (ppf.person_id, :4))
) AS root_person_id,
TO_CHAR
(irc_skills_matching_pkg.vacancy_match_percent
(irc_utilities_pkg.get_recruitment_person_id (ppf.person_id,
:5
vac.vacancy_id,
:6
) AS match_percent,
ppf.party_id, paf.effective_start_date AS assignment_start_date,
pov.vendor_id, pov.vendor_name, regatmpt.attempt_id AS reg_attempt_id,
TO_NUMBER (DECODE (regatmpt.raw_score, -1000, NULL, regatmpt.raw_score)
) AS reg_attempt_score,
NVL2
(regatmpt.mastery_score,
DECODE (GREATEST (regatmpt.mastery_score, regatmpt.raw_score),
regatmpt.raw_score, 'P',
'F'
NVL2 (fnd_profile.VALUE ('IRC_REGISTER_TEST'),
NVL2 (inp.attempt_id, 'A', 'N'),
NULL
) AS reg_attempt_status,
aplatmpt.attempt_id AS apl_attempt_id,
TO_NUMBER (DECODE (aplatmpt.raw_score, -1000, NULL, aplatmpt.raw_score)
) AS apl_attempt_score,
NVL2
(aplatmpt.mastery_score,
DECODE (GREATEST (aplatmpt.mastery_score, aplatmpt.raw_score),
aplatmpt.raw_score, 'P',
'F'
NVL2 (vac.assessment_id, NVL2 (iad.attempt_id, 'A', 'N'), NULL)
) AS apl_attempt_status,
hrl.meaning, hrl.lookup_type, hrl.lookup_code,
iad.assignment_details_id, iad.considered AS considered,
vac.business_group_id,
NVL
((SELECT iav.manage_applicants_allowed
FROM irc_agency_vacancies iav
WHERE iav.vacancy_id = vac.vacancy_id
AND iav.agency_id = fnd_profile.VALUE ('IRC_AGENCY_NAME')),
'Y'
) AS manage_applicants_allowed,
DECODE (paf.source_type, 'ER', 'Y', 'N') AS referred,
ircreferralinfoeo.start_date, ircreferralinfoeo.end_date,
(SELECT meaning
FROM hr_lookups
WHERE lookup_code = ircreferralinfoeo.source_type
AND lookup_type = 'REC_TYPE') AS sourcetype,
DECODE (ircreferralinfoeo.source_type,
'ER', (SELECT full_name
FROM per_all_people_f
WHERE person_id = ircreferralinfoeo.source_person_id
AND SYSDATE BETWEEN effective_start_date
AND effective_end_date),
ircreferralinfoeo.source_name
) AS sourcename,
ircreferralinfoeo.object_id, ircreferralinfoeo.object_type
FROM per_addresses addr,
per_phones phn,
per_all_people_f ppf,
per_all_assignments_f paf,
per_all_vacancies vac,
per_assignment_status_types_v ast,
per_all_people_f mgr,
per_all_people_f rec,
irc_notification_preferences inp,
hr_locations_all_vl loc,
irc_documents doc,
irc_search_criteria iwp,
per_all_people_f irc_ppf,
po_vendors pov,
ota_attempts regatmpt,
irc_assignment_details_f iad,
ota_attempts aplatmpt,
hr_lookups hrl,
irc_referral_info ircreferralinfoeo
WHERE irc_utilities_pkg.get_recruitment_person_id (ppf.person_id, :7) =
irc_ppf.person_id
AND :8 BETWEEN ppf.effective_start_date AND ppf.effective_end_date
AND irc_ppf.party_id = ppf.party_id
AND ppf.person_id = paf.person_id
AND paf.assignment_type = 'A'
AND paf.vacancy_id = vac.vacancy_id
AND :9 BETWEEN paf.effective_start_date AND paf.effective_end_date
AND paf.assignment_status_type_id = ast.assignment_status_type_id
AND irc_ppf.person_id = doc.person_id(+)
AND irc_ppf.person_id = phn.parent_id(+)
AND phn.parent_table(+) = 'PER_ALL_PEOPLE_F'
AND phn.phone_type(+) = 'H1'
AND :10 BETWEEN NVL (phn.date_from(+), :11) AND NVL (phn.date_to(+), :12)
AND vac.manager_id = mgr.person_id(+)
AND :13 BETWEEN mgr.effective_start_date(+) AND mgr.effective_end_date(+)
AND vac.recruiter_id = rec.person_id(+)
AND :14 BETWEEN rec.effective_start_date(+) AND rec.effective_end_date(+)
AND irc_ppf.person_id = inp.person_id(+)
AND inp.person_id = addr.person_id(+)
AND NVL (inp.address_id, DECODE (addr.address_type(+), 'REC', addr.address_id(+),
-1)) = addr.address_id(+)
AND :15 BETWEEN addr.date_from(+) AND NVL (addr.date_to(+), :16)
AND loc.location_id(+) = vac.location_id
AND doc.TYPE(+) LIKE '%RESUME'
AND doc.end_date(+) IS NULL
AND irc_ppf.person_id = iwp.object_id(+)
AND iwp.object_type(+) = 'WPREF'
AND :17 BETWEEN irc_ppf.effective_start_date AND irc_ppf.effective_end_date
AND ( inp.agency_id = fnd_profile.VALUE ('IRC_AGENCY_NAME')
OR fnd_profile.VALUE ('IRC_AGENCY_NAME') IS NULL
AND inp.agency_id = pov.vendor_id(+)
AND inp.attempt_id = regatmpt.attempt_id(+)
AND paf.assignment_id = iad.assignment_id(+)
AND :18 BETWEEN iad.effective_start_date(+) AND iad.effective_end_date(+)
AND iad.latest_details(+) = 'Y'
AND iad.attempt_id = aplatmpt.attempt_id(+)
AND hrl.lookup_type(+) = 'VACANCY_STATUS'
AND vac.status = hrl.lookup_code(+)
AND paf.assignment_id = ircreferralinfoeo.object_id(+)
AND SYSDATE BETWEEN ircreferralinfoeo.start_date(+) AND ircreferralinfoeo.end_date(+)
AND ( 1 = 1
AND (NVL (doc.document_id, 1) =
NVL ((SELECT MAX (idoc1.document_id)
FROM irc_documents idoc1
WHERE idoc1.person_id = irc_ppf.person_id
AND idoc1.TYPE IN ('RESUME', 'AUTO_RESUME')
AND idoc1.end_date IS NULL
AND idoc1.last_update_date =
(SELECT MAX (idoc2.last_update_date)
FROM irc_documents idoc2
WHERE idoc2.person_id = irc_ppf.person_id
AND idoc2.TYPE IN
('RESUME', 'AUTO_RESUME')
AND idoc2.end_date IS NULL)),
1
and my where clause that i want to append to the existing one:
and ppf.sex = 'M' and ppf.nationality = '1680'
my processFormRequest function in my extended CO
public void processFormRequest(OAPageContext pageContext,
OAWebBean webBean) {
super.processFormRequest(pageContext, webBean);
OAApplicationModule am = pageContext.getApplicationModule(webBean);
String genderValue = pageContext.getParameter("gender");
String nationality = pageContext.getParameter("nationality");
ViewObject personAplListVO = am.findViewObject("PersonAplListVO");
String personAplListVOWhereClause = personAplListVO.getWhereClause();
Object[] whereClauseParams = personAplListVO.getWhereClauseParams();
String newWhereClause = "";
//gender
if (genderValue != null && !genderValue.trim().equals("")) {
newWhereClause += " and ppf.sex = '" + genderValue + "'";
//nationality
if (nationality != null && !nationality.trim().equals("")) {
newWhereClause += " and ppf.nationality = '" + nationality + "'";
System.out.println("\n>>>>>>>>getQuery = " + personAplListVO.getQuery());
System.out.println("\n>>>>>>>>newWhereClause = " + newWhereClause);
if (!newWhereClause.equals("")) {
personAplListVO.clearCache();
personAplListVO.setWhereClause(null); // first set to null
personAplListVO.setWhereClauseParams(null); // first set to null
personAplListVO.setWhereClause(personAplListVOWhereClause +
newWhereClause);
personAplListVO.setWhereClauseParams(whereClauseParams);
personAplListVO.executeQuery();
// System.out.println(">>>>>>>>newWhereClause" +
// personAplListVOWhereClause + newWhereClause);
// System.out.println(">>>>>>>>getWhereClause" +
// personAplListVO.getWhereClause());
// System.out.println(">>>>>>>>getQuery = " +
// personAplListVO.getQuery());
any tips?
thanks a lot -
Mysql equivalent oracle sql query is required
Hi all,
please help me convert mysql quyery into sql query.
select u.username, t.name as fullname, p.id as project_id, p.name as project,
(select count(a.resource_id) from pd_resource_task_alloc as a left OUTER JOIN pd_resource_task as b on a.task_id=b.task_id where a.task_id=t.id ) as allocatedTask,
(select count(a.resource_id) from pd_resource_task_alloc as a left OUTER JOIN pd_resource_task as b on a.task_id=b.task_id where a.task_id=t.id and b.task_status_id='2') as completedTask,
(select count(a.resource_id) from pd_resource_task_alloc as a left OUTER JOIN pd_resource_task as b on a.task_id=b.task_id where a.task_id=t.id and b.task_status_id!='2') as pendingTask,
c.name as category, sub.task_id, t.name, sub.bucket_date, sum(sub.alloc_time) as s
from (select rt.task_id, rt.resource_id, rt.project_id, rta.sequence, rta.alloc_time,DATE(th.creation_date) as creation_date,rt.start_date,th.task_status_id,rt.start_date as bucket_date from resource_task rt, resource_task_alloc rta ,task_history th
where rt.task_id = rta.task_id and rt.task_id = th.task_id and th.task_status_id >=2
and rt.resource_id = rta.resource_id and rt.project_id = rta.project_id
and rta.alloc_time > 0 and rt.start_date is not null ) as sub,
pd_tool_user u, pd_task t, pd_project p, pd_category c where sub.resource_id = u.id
and sub.start_date >='2011-11-01' and sub.creation_date <= '2011-11-31'
and sub.task_id = t.id and sub.project_id = p.id and
t.category_id = c.id
and sub.project_id='355'
group by p.project, u.username, p.id , u.name, sub.task_id, t.name, c.name,
sub.bucket_date order by u.username, sub.bucket_date, p.name, c.nameThanks,
P PrakashNot sure as we don't have any tables and data to work with, but firstly...
a) format your code to make it easier to see what's going on
b) don't mix ansi joins with regular joins
c) treat DATEs as DATEs
d) Table alias names don't use the "AS" keyword
First guess (obviously unteseted)...
select u.username
,t.name as fullname
,p.id as project_id
,p.name as project
,(select count(a.resource_id)
from pd_resource_task_alloc a
left OUTER JOIN pd_resource_task b on (a.task_id=b.task_id)
where a.task_id=t.id
) as allocatedTask
,(select count(a.resource_id)
from pd_resource_task_alloc a
left OUTER JOIN pd_resource_task b on (a.task_id=b.task_id)
where a.task_id=t.id
and b.task_status_id='2'
) as completedTask
,(select count(a.resource_id)
from pd_resource_task_alloc a
left OUTER JOIN pd_resource_task b on (a.task_id=b.task_id)
where a.task_id=t.id
and b.task_status_id!='2'
) as pendingTask
,c.name as category
,sub.task_id
,t.name
,sub.bucket_date
,sum(sub.alloc_time) as s
from (select rt.task_id
,rt.resource_id
,rt.project_id
,rta.sequence
,rta.alloc_time
,th.creation_date -- assuming creation_date is a DATE datatype?
,rt.start_date
,th.task_status_id
,rt.start_date as bucket_date
from resource_task rt
join resource_task_alloc rta on (rt.task_id = rta.task_id
and rt.resource_id = rta.resource_id
and rt.project_id = rta.project_id)
join task_history th on (rt.task_id = th.task_id)
where th.task_status_id >=2
and rta.alloc_time > 0
and rt.start_date is not null
) sub
join pd_tool_user u on (sub.resource_id = u.id)
join pd_task t on (sub.task_id = t.id)
join pd_project p on (sub.project_id = p.id)
join pd_category c on (t.category_id = c.id)
where sub.start_date >= to_date('2011-11-01','YYYY-MM-DD') -- assuming start_date is a DATE datatype
and sub.creation_date <= to_date('2011-11-31','YYYY-MM-DD') -- assuming creation_date is a DATE datatype
and sub.project_id='355'
group by p.project
,u.username
,p.id
,u.name
,sub.task_id
,t.name
,c.name
,sub.bucket_date
order by u.username
,sub.bucket_date
,p.name
,c.name -
Hello,
I would like to send email notification to users by 3 days in advance before the start date, this is the query I am using to pick the employees, is my sql query correct?
Thanks
select START_DATE,END_DATE
from table where START_DATE >= sysdate + 3 andSTART_DATE<= sysdate + 4from table where START_DATE >= sysdate + 3 andSTART_DATE < sysdate + 4
You should be using L.T. operator and not L.E.
Also, if you are not concerned about the time part in the date fields ( I assume START_DATE is a date field), query with above modification should be all right. -
How to modify a SQL query?
Hi all,
I am using Crystal Reports version 10. I have a number of reports that have been written by a software vendor wherby the name of the database they were connected to when the report was written is coded into the FROM command of the reports SQL query, eg "GCUK_2" in the of the SQL snippet below.
SELECT "Clients"."NAME", "Quotes"."QUOTE_ID", "Quote_Items"."UPRICE", "Quote_Items"."QTY", "Quote_Items"."UOM", "Quote_Items"."QUSAGE_ID", "Report_Control"."QUSAGEID", "Quote_Items"."STANDARD", "Quote_Items"."SECT_FLAG", "Quote_Items"."DISPORDER", "Quotes"."DESCRIPT", "Report_Control"."SECT_NAME", "Quote_Items"."CNT", "Category_and_Type"."TYPEDESC", "Quote_Items"."DESCRIPT", "Report_Control"."DISP_SORT"
FROM ((("GCUK_2"."schedwin"."QTE_CTRL" "Report_Control" INNER JOIN "GCUK_2"."schedwin"."QUSAGE" "Quote_Items" ON "Report_Control"."QUSAGEID"="Quote_Items"."QUSAGE_ID") LEFT OUTER JOIN "GCUK_2"."schedwin"."QUOTES" "Quotes" ON
I have tried setting the Datasource Location, but it doesn't change the query at all. I have read on another forum that you can generate another SQL query using the Database Expert, Current Connections, then right click the Add Command for the database you want to create a SQL command. Is this the only way to update the database names in the query?
Thanks,
Scott.Hi Sourashree,
Thanks for that. All the reports were created by the vendor using tables as opposed to the command object. I would have thought that changing the datasource would automatically cause Crystal to rewrite the SQL query syntax, but this doesn't appear to be the case.
Yes, I've noticed that modifying the record selection will change the sql query. The only way I can see to change the database name in the query is to change to the desired databsource and then remove and re-insert the tables, which will then update the query with the correct name. However, this seems to be a convoluted way of changing the db name in the query. -
Discoverer Report showing Null VS Show SQL query showing results !!!
I created a simple Cross Tab Discoverer report from a custom SQL which has a calculation for balances. The output is giving all null values even though there are balances. The output doesn't seem right. So I copied the query from Tools-->Show SQL and ran the query in the TOAD where I'm showing balances for the report. I don't understand why it is not showing in the discoverer. Please help.
Thanks
Edited by: PA1B on Jan 27, 2010 11:40 AMSorry for late reply.
Below is the Show SQL query. I don't think the query is application dependent. C_1 is my calculation.
SELECT o279709.SEGMENT3 as E279727,
o279709.SEGMENT4 as E279728,
CASE WHEN o279709.CURRENCY_CODE = 'USD' AND o279709.TRANSLATED_FLAG <> 'Y' THEN SUM(o279709.ENDING_BAL) ELSE 0 END as C_1,
GROUPING_ID(o279709.CURRENCY_CODE,o279709.SEGMENT3,o279709.SEGMENT4,o279709.TRANSLATED_FLAG) as GID
FROM ( --Foriegn Entity USD Balances
SELECT B.SEGMENT1,
B.SEGMENT2,
B.SEGMENT3,
(select distinct substr(cat.COMPILED_VALUE_ATTRIBUTES,5,1) from apps.fnd_flex_values cat
where FLEX_VALUE_SET_ID = (select bat.FLEX_VALUE_SET_ID from apps.fnd_id_flex_structures_vl aat, apps.fnd_id_flex_segments_vl bat
where bat.id_flex_code = 'GL#' and
bat.id_flex_code = aat.id_flex_code and
aat.APPLICATION_ID = bat.APPLICATION_ID and
aat.APPLICATION_ID = 101 and
bat.SEGMENT_NAME = 'Prime Account' and
aat.id_flex_num = bat.id_flex_num
and bat.id_flex_num in (select distinct chart_of_accounts_id from apps.gl_code_combinations gat
where gat.code_combination_id = A.code_combination_id))
and cat.flex_value = b.segment3) ACCT_TYPE ,
B.SEGMENT4,
B.SEGMENT5,
B.SEGMENT6,
B.SEGMENT7,
B.SEGMENT8,
B.SEGMENT9,
B.SEGMENT10,
B.SEGMENT11,
B.SEGMENT12,
B.SEGMENT13,
C.NAME,
A.SET_OF_BOOKS_ID,
A.CURRENCY_CODE,A.TRANSLATED_FLAG,
SUM(NVL(A.BEGIN_BALANCE_DR,0) - NVL(A.BEGIN_BALANCE_CR,0)) BEG_BAL,
SUM(NVL(A.PERIOD_NET_DR,0)) DEBITS,
SUM( NVL(A.PERIOD_NET_CR,0)) CREDITS ,
A.PERIOD_NAME,
SUM(NVL(A.BEGIN_BALANCE_DR,0) - NVL(A.BEGIN_BALANCE_CR,0))+ SUM(NVL(A.PERIOD_NET_DR,0) - NVL(A.PERIOD_NET_CR,0)) ENDING_BAL
FROM APPS.GL_BALANCES A ,
APPS.GL_CODE_COMBINATIONS B,
APPS.GL_SETS_OF_BOOKS C
WHERE A.CODE_COMBINATION_ID = B.CODE_COMBINATION_ID
--AND A.PERIOD_NAME = 'SEP-09'
AND C.SET_OF_BOOKS_ID = A.SET_OF_BOOKS_ID
--AND A.TRANSLATED_FLAG <> 'Y'
--AND B.SEGMENT1 = '83101'
--AND B.SEGMENT3 = '14602'
--AND A.SET_OF_BOOKS_ID = 77
--AND A.CURRENCY_CODE = 'USD'
GROUP BY A.CODE_COMBINATION_ID,
B.SEGMENT1,
B.SEGMENT2,
B.SEGMENT3,
B.SEGMENT4,
B.SEGMENT5,
B.SEGMENT6,
B.SEGMENT7,
B.SEGMENT8,
B.SEGMENT9,
B.SEGMENT10,
B.SEGMENT11,
B.SEGMENT12,
B.SEGMENT13,
A.CURRENCY_CODE,
A.TRANSLATED_FLAG,
C.NAME,A.PERIOD_NAME,
A.SET_OF_BOOKS_ID
) o279709
WHERE (o279709.PERIOD_NAME = 'DEC-09')
AND (o279709.SET_OF_BOOKS_ID <> 72)
AND (o279709.SEGMENT12 = '000')
AND (o279709.SEGMENT3 IN ('10101','10301','10502','12001'))
AND (o279709.SEGMENT1 IN ('82901','82902','82903','83001','83003','83201'))
GROUP BY GROUPING SETS(( o279709.CURRENCY_CODE,o279709.SEGMENT3,o279709.SEGMENT4,o279709.TRANSLATED_FLAG ),( o279709.SEGMENT3,o279709.SEGMENT4 ),( o279709.SEGMENT3 ))
HAVING (GROUP_ID()=0)
ORDER BY GID DESC;
Thanks,
PA1
Edited by: PA1B on Jan 29, 2010 12:50 PM -
Error while executing a sql query for select
HI All,
ORA-01652: unable to extend temp segment by 128 in tablespace PSTEMP i'm getting this error while i'm executing the sql query for selecting the data.I am having 44GB of temp space, while executing the below query my temp space is getting full, Expert please let us know how the issue can be resolved..
1. I dont want to increase the temp space
2. I need to tune the query, please provide your recomendations.
insert /*+APPEND*/ into CST_DSA.HIERARCHY_MISMATCHES
(REPORT_NUM,REPORT_TYPE,REPORT_DESC,GAP,CARRIED_ITEMS,CARRIED_ITEM_TYPE,NO_OF_ROUTE_OF_CARRIED_ITEM,CARRIED_ITEM_ROUTE_NO,CARRIER_ITEMS,CARRIER_ITEM_TYPE,CARRIED_ITEM_PROTECTION_TYPE,SOURCE_SYSTEM)
select
REPORTNUMBER,REPORTTYPE,REPORTDESCRIPTION ,NULL,
carried_items,carried_item_type,no_of_route_of_carried_item,carried_item_route_no,carrier_items,
carrier_item_type,carried_item_protection_type,'PACS'
from
(select distinct
c.REPORTNUMBER,c.REPORTTYPE,c.REPORTDESCRIPTION ,NULL,
a.carried_items,a.carried_item_type,a.no_of_route_of_carried_item,a.carried_item_route_no,a.carrier_items,
a.carrier_item_type,a.carried_item_protection_type,'PACS'
from CST_ASIR.HIERARCHY_asir a,CST_DSA.M_PB_CIRCUIT_ROUTING b ,CST_DSA.REPORT_METADATA c
where a.carrier_item_type in('Connection') and a.carried_item_type in('Service')
AND a.carrier_items=b.mux
and c.REPORTNUMBER=(case
when a.carrier_item_type in ('ServicePackage','Service','Connection') then 10
else 20
end)
and a.carrier_items not in (select carried_items from CST_ASIR.HIERARCHY_asir where carried_item_type in('Connection') ))A
where not exists
(select *
from CST_DSA.HIERARCHY_MISMATCHES B where
A.REPORTNUMBER=B.REPORT_NUM and
A.REPORTTYPE=B.REPORT_TYPE and
A.REPORTDESCRIPTION=B.REPORT_DESC and
A.CARRIED_ITEMS=B.CARRIED_ITEMS and
A.CARRIED_ITEM_TYPE=B.CARRIED_ITEM_TYPE and
A.NO_OF_ROUTE_OF_CARRIED_ITEM=B.NO_OF_ROUTE_OF_CARRIED_ITEM and
A.CARRIED_ITEM_ROUTE_NO=B.CARRIED_ITEM_ROUTE_NO and
A.CARRIER_ITEMS=B.CARRIER_ITEMS and
A.CARRIER_ITEM_TYPE=B.CARRIER_ITEM_TYPE and
A.CARRIED_ITEM_PROTECTION_TYPE=B.CARRIED_ITEM_PROTECTION_TYPE
AND B.SOURCE_SYSTEM='PACS'
Explain Plan
==========
Plan
INSERT STATEMENT ALL_ROWSCost: 129 Bytes: 1,103 Cardinality: 1
20 LOAD AS SELECT CST_DSA.HIERARCHY_MISMATCHES
19 PX COORDINATOR
18 PX SEND QC (RANDOM) PARALLEL_TO_SERIAL SYS.:TQ10002 :Q1002Cost: 129 Bytes: 1,103 Cardinality: 1
17 NESTED LOOPS PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 129 Bytes: 1,103 Cardinality: 1
15 HASH JOIN RIGHT ANTI NA PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 129 Bytes: 1,098 Cardinality: 1
4 PX RECEIVE PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 63 Bytes: 359,283 Cardinality: 15,621
3 PX SEND BROADCAST PARALLEL_TO_PARALLEL SYS.:TQ10001 :Q1001Cost: 63 Bytes: 359,283 Cardinality: 15,621
2 PX BLOCK ITERATOR PARALLEL_COMBINED_WITH_CHILD :Q1001Cost: 63 Bytes: 359,283 Cardinality: 15,621
1 MAT_VIEW ACCESS FULL MAT_VIEW PARALLEL_COMBINED_WITH_PARENT CST_ASIR.HIERARCHY :Q1001Cost: 63 Bytes: 359,283 Cardinality: 15,621
14 NESTED LOOPS ANTI PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 65 Bytes: 40,256,600 Cardinality: 37,448
11 HASH JOIN PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 65 Bytes: 6,366,160 Cardinality: 37,448
8 BUFFER SORT PARALLEL_COMBINED_WITH_CHILD :Q1002
7 PX RECEIVE PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 1 Bytes: 214 Cardinality: 2
6 PX SEND BROADCAST PARALLEL_FROM_SERIAL SYS.:TQ10000 Cost: 1 Bytes: 214 Cardinality: 2
5 INDEX FULL SCAN INDEX CST_DSA.IDX$$_06EF0005 Cost: 1 Bytes: 214 Cardinality: 2
10 PX BLOCK ITERATOR PARALLEL_COMBINED_WITH_CHILD :Q1002Cost: 63 Bytes: 2,359,224 Cardinality: 37,448
9 MAT_VIEW ACCESS FULL MAT_VIEW PARALLEL_COMBINED_WITH_PARENT CST_ASIR.HIERARCHY :Q1002Cost: 63 Bytes: 2,359,224 Cardinality: 37,448
13 TABLE ACCESS BY INDEX ROWID TABLE PARALLEL_COMBINED_WITH_PARENT CST_DSA.HIERARCHY_MISMATCHES :Q1002Cost: 0 Bytes: 905 Cardinality: 1
12 INDEX RANGE SCAN INDEX PARALLEL_COMBINED_WITH_PARENT SYS.HIERARCHY_MISMATCHES_IDX3 :Q1002Cost: 0 Cardinality: 1
16 INDEX RANGE SCAN INDEX PARALLEL_COMBINED_WITH_PARENT CST_DSA.IDX$$_06EF0001 :Q1002Cost: 1 Bytes: 5 Cardinality: 1
Maybe you are looking for
-
Are there any amazing features for people with disabilities not available in Windows?
I do volunteer work at a group in Tokyo which provides English conversation and light computer lessons for people with various kinds of disabilities on Sundays at a community center. They want me to come in on Sundays for a few months and teach peopl
-
Tax jurisdiction for taxinj vs taxinn procedure
Hello, I am trying to configure CIN, and would like know how system will determine the tax jurisdiction for taxinn procedure. As if we use procedure taxinj then for tax code we can maintain the tax jurisdiction but if we use the procedure Taxinn then
-
I accidentally deleted my recovery partition and tried to use the recovery discs I made to restore the recovery partition. However, after following all on screen instructions I get the following error: Recovery Manager could not restore your compute
-
DB LINK Oracle to SQL Server SQL Server TimeStamp converts to Oracle Date
Hi All, I have created a DB link between Oracle 10g 10.2.0.5 to SQL server 2005 using Oracle 11g gateway. When I execute a query from Oracle that selects data from SQL server using the DBLINK then the column value of type Timestamp from SQL server ge
-
FnF Error when file is there Please Help
I'm working on a school project and i have an encryption funcion, it creates a keyfile and then when you try to login it reads that keyfile and and decrypts the password and checks the password given by the user. i have this code try { Obje