Using a list in the where part of my query
I don't want to bother getting results for everyone in my DB.
I only want to retreive information from a list of up to 5
people - the list will constantly change.
I started with code below:
<cfparam name="useYear" default="Year(now())">
<!--- LIST --->
<cfset riderList="1,5,10,18,53">
<cfloop index="i" from="1" to="#ListLen(riderList)#">
<cfquery name="getRiderSum" datasource="mileage">
SELECT riderId,
SUM(IIf(month(rideDate)=1, rideDistance, 0)) AS janSum,
SUM(IIf(month(rideDate)=2, rideDistance, 0)) AS febSum,
SUM(IIf(month(rideDate)=3, rideDistance, 0)) AS marSum,
SUM(IIf(month(rideDate)=4, rideDistance, 0)) AS aprSum,
SUM(IIf(month(rideDate)=5, rideDistance, 0)) AS maySum,
SUM(IIf(month(rideDate)=6, rideDistance, 0)) AS junSum,
SUM(IIf(month(rideDate)=7, rideDistance, 0)) AS julSum,
SUM(IIf(month(rideDate)=8, rideDistance, 0)) AS augSum,
SUM(IIf(month(rideDate)=9, rideDistance, 0)) AS sepSum,
SUM(IIf(month(rideDate)=10, rideDistance, 0)) AS octSum,
SUM(IIf(month(rideDate)=11, rideDistance, 0)) AS novSum,
SUM(IIf(month(rideDate)=12, rideDistance, 0)) AS decSum
FROM mileageLog
WHERE riderId=#i#
AND Year(rideDate)=#useYear#
GROUP BY riderId
</cfquery>
</cfloop>
but how do I keep the information ordered by the riderId?
do I utilize the "i" as part of my query name?...
name="getRiderSum
do I utilize it as part of each monthly variable? ... AS
janSum etc.
You don't need a cfloop. Try an IN(...) clause instead.
Obviously you have to validate that the #riderlist# is not empty
first or the query will error.
SELECT riderId,
SUM(IIf(month(rideDate)=1, rideDistance, 0)) AS janSum,
SUM(IIf(month(rideDate)=2, rideDistance, 0)) AS febSum,
SUM(IIf(month(rideDate)=3, rideDistance, 0)) AS marSum,
SUM(IIf(month(rideDate)=4, rideDistance, 0)) AS aprSum,
SUM(IIf(month(rideDate)=5, rideDistance, 0)) AS maySum,
SUM(IIf(month(rideDate)=6, rideDistance, 0)) AS junSum,
SUM(IIf(month(rideDate)=7, rideDistance, 0)) AS julSum,
SUM(IIf(month(rideDate)=8, rideDistance, 0)) AS augSum,
SUM(IIf(month(rideDate)=9, rideDistance, 0)) AS sepSum,
SUM(IIf(month(rideDate)=10, rideDistance, 0)) AS octSum,
SUM(IIf(month(rideDate)=11, rideDistance, 0)) AS novSum,
SUM(IIf(month(rideDate)=12, rideDistance, 0)) AS decSum
FROM mileageLog
WHERE riderId IN (<cfqueryparam value="#riderList#"
cfsqltype="the column type here" list="true"> )
AND Year(rideDate)=#useYear#
GROUP BY riderId
ORDER BY riderId
Similar Messages
-
Provider Hosted App not listed in the App Part or Web Part
What I have done:
I have created developer site collection
in office 365
I have created a provider app in visual
studio, modified appmanifest.xml with the client id, client issue (from developer site) and provided targeted domain
I have deployed web application from the
visual studio into Azure it can be accessible default page
I have published App project into Azure
What I tried:
I have confiured app catalog in the SP 2013
office 365 developer site Central Admin where I can register my apps
I have registered my appfile in the catalog
site collection
I have created another site collection with
team site template and added the app there
I created a web part page and wanted to
insert this app as a web pat in the page it is not appearing/coming in the app part to insert
What I wanted now:
I wanted to insert this app in the site
web part page of any SharePoint 2013 site collection
App
part listed in the Site Content but it is not listed in the web part page " Web part or App Part" containers to insert...
Am I missing something? any one encountered same issue? Any help appreciated.
Regs,
MadhuHi Madhu,
Once you deploy your App, The App will get deployed to the App web rather host web. That is reason you will not be able to find the app either in App part or webpart section of host web.
http://msdn.microsoft.com/en-us/library/fp179925.aspx#IsolatedDomain
My Blog- http://www.sharepoint-journey.com| Twitter
If a post answers your question, please click "Mark As Answer" on that post and "Vote as Helpful -
DECODE in the WHERE part of the query ?
Hello guys ,I am on 10gR2, and as always , the following mystery for me will be funny for you : ), so please share your knowledge.
I have one select on v$session , and i would to use something like DECODE function in the WHERE part of the query,
but , for the values i enter through the variables.
Currently i have something like :
WHERE status =upper('&session_status') AND username IS NOT NULL order by last_call_et desc;and that works fine, i enter either 'active' or 'inactive' and i get results.
But i would like to enter for example '1' for active and '2' for inactive, so i could write as little as i can as i am lazy. : )
Do you have some idea ?hi there
select * from v$session where status = decode('&session_status',1,'ACTIVE','INACTIVE') AND username IS NOT NULL order by last_call_et descregards
hitesh -
when i go to the app store to update the one app that needs to be updated, the screen is blank. It used to list all the apps that need updating and have a button called update all. Now nothing. Just a blank screen. How can I fix this?
There's been a problem with this all day. Seems to be a server problem - wait a day and try again, or use itunes on the computer to update, that works.
-
Query Tuning - using CASE statement in the WHERE clause - Duplicate Post
Duplicate Post by mistake.
Please check
Query Tuning - using CASE statement in the WHERE clause
Edited by: Chaitanya on Jun 9, 2011 2:45 AM
Edited by: Chaitanya on Jun 9, 2011 2:46 AMDuplicate Post by mistake.
Please check
Query Tuning - using CASE statement in the WHERE clause
Edited by: Chaitanya on Jun 9, 2011 2:45 AM
Edited by: Chaitanya on Jun 9, 2011 2:46 AM -
Regarding dynamically assigning the where clause to select query
hi,
Please send the code regarding how to dynamically assign the where clause to select query.
thanks in advanceSELECT <fileds>
INTO TABLE itab
FROM dbase
WHERE condition. -
Using if logic in the where clause of a select statement
I have a select clause. And in the select clause there is a variable all_off_trt that can be 'Y' or 'N'.
In the where clause I want to make it so that if a form variable is checked and all_off_trt is 'Y' then
exclude it else if the form variable isn't checked then select it no matter what all_off_trt is.
Is there any way to include either and if statement or a case statement within the where clause to acheive this? If not is there another way of doing it?
Basically I am looking for a case statement like this
case
when all_off_trt = 'Y' and mail_para.code = 'Y' then false
else true
end
Message was edited by:
Tugnutt7Ok, so that really doesn't solve my problem. I have 3 different fields that I need to do that with. Each combining in a select statement to print an email list, as well as other thing limiting the where clause.
This is currently what I have, tested and working 100%.
cursor email_cur is
select unique p.email,s.all_off_trt,s.all_deceased,s.no_enroll
from participant p, trialcom t, ethics s
where p.status='A'
and p.surname=t.surname
and p.initials=t.initials
and s.trial_cd = t.tricom
and s.centre = t.centre
and p.email is not null
and (t.centre in (select code from mail_parameters where user_name=user and mail_para='CENTRE')
or 'XX' in (select code from mail_parameters where user_name=user and mail_para='CENTRE'))
and (t.tricom in (select code from mail_parameters where user_name=user and mail_para='TRIAL')
or 'XX' in (select code from mail_parameters where user_name=user and mail_para='TRIAL'))
and (t.role in (select code from mail_parameters where user_name=user and mail_para='ROLE')
or 'XX' in (select code from mail_parameters where user_name=user and mail_para='ROLE'))
and (p.country in (select code from mail_parameters where user_name=user and mail_para='COUNTRY')
or 'XX' in (select code from mail_parameters where user_name=user and mail_para='COUNTRY'))
and (t.represent in (select code from mail_parameters where user_name=user and mail_para='REPRESENT')
or 'XX' in (select code from mail_parameters where user_name=user and mail_para='REPRESENT'));
This is in a program unit that runs when a button is clicked. At the end of that I need to add on the 3 case statements that help further narrow down the selection of emails to be printed. Then it prints the emails selected from this statement into a file. So it has to be done right in the select statement. The three table variables are the all_off_trt, all_deceased, and no_enroll. The form has 3 checkboxes. One for each, that when checked (giving the variable associated with the checkboxes a value of 'Y') excludes all emails that have a 'Y' in the coresponding table variable. -
Trouble using a function in the where clause
Hello,
I am using a function found at ask.tom.oracle.com which converts a long data type to a character. The function is returning an error when it is placed in the where clause. The sql statement , error message and the function from ask tom are shown below. Does anyone know how to fix this?
<pre>
SELECT A.FLDPHYSICAL,
A.FLDEXPOSURE,
A.FLDDATEDUE,
A.FLDDATELAST,
A.FLDEMPLOYEE,
B.FLDBDATE,
B.FLDMAILSTOP,
B.FLDREC_NUM,
B.FLDLNAME,
B.FLDMI,
B.FLDFNAME,
B.FLDBDATE,
B.FLDDEPT,
B.FLDSTATUS,
B.FLDSSN,
B.FLDHOMEPHON,
B.FLDWORKPHON,
B.FLDID,
B.FLDDIVISION
FROM REQEXAM A,
EMPLOYEE B,
EMPLOYEE_MEMO C
WHERE A.FLDEMPLOYEE = B.FLDREC_NUM
AND b.flduserstr = c.fldrec_num
AND OHM_PKG.GET_LONG('EMPLOYEE_MEMO', 'FLDDATA', C.ROWID) LIKE '%CDL YES%'
AND A.FLDDATEDUE > '01/01/1900'
AND A.FLDPHYSICAL ='CDP'
ORDER BY B.FLDDIVISION,
B.FLDLNAME,
B.FLDFNAME,
B.FLDMI,
A.FLDDATEDUE
The error message
Error at Command Line:26 Column:4
Error report:
SQL Error: ORA-00904: "OHM_PKG"."GET_LONG": invalid identifier
00904. 00000 - "%s: invalid identifier"
create or replace
PACKAGE OHM_PKG AS
/* TODO enter package declarations (types, exceptions, methods etc) here */
function getlong( p_tname in varchar2,p_cname in varchar2,p_rowid in rowid ) return varchar2;
END OHM_PKG;
create or replace
PACKAGE BODY OHM_PKG AS
function getlong( p_tname in varchar2,p_cname in varchar2,p_rowid in rowid ) return varchar2 as
l_cursor integer default dbms_sql.open_cursor;
l_n number;
l_long_val varchar2(4000);
l_long_len number;
l_buflen number := 4000;
l_curpos number := 0;
begin
dbms_sql.parse( l_cursor,
'select ' || p_cname || ' from ' || p_tname ||
' where rowid = :x',
dbms_sql.native );
dbms_sql.bind_variable( l_cursor, ':x', p_rowid );
dbms_sql.define_column_long(l_cursor, 1);
l_n := dbms_sql.execute(l_cursor);
if (dbms_sql.fetch_rows(l_cursor)>0)
then
dbms_sql.column_value_long(l_cursor, 1, l_buflen, l_curpos ,
l_long_val, l_long_len );
end if;
dbms_sql.close_cursor(l_cursor);
return l_long_val;
end getlong;
END OHM_PKG;
</prev>Remove the '_' from the function's name as below:
AND OHM_PKG.GETLONG('EMPLOYEE_MEMO', 'FLDDATA', C.ROWID) LIKE '%CDL YES%' -
Using a List as the value class of a Map - How?
Hello,
I have a managed-property of the following type
Map<String, List<String>> myMap;How can I set the values for the List in the faces-config.xml?
I tried sth like this, but this is no valid XML according to the schema.
Any ideas?
Regards,
Jan
<managed-property>
<property-name>myMap</property-name>
<property-class>java.util.TreeMap</property-class>
<map-entries>
<key-class>java.lang.String</key-class>
<value-class>java.lang.ArrayList</value-class>
<map-entry>
<key>key1</key>
<value>
<list-entries>
<value>value1</value>
<value>value2</value>
</list-entries>
</value>
</map-entry>
</map-entries>
</managed-property>You don't need a cfloop. Try an IN(...) clause instead.
Obviously you have to validate that the #riderlist# is not empty
first or the query will error.
SELECT riderId,
SUM(IIf(month(rideDate)=1, rideDistance, 0)) AS janSum,
SUM(IIf(month(rideDate)=2, rideDistance, 0)) AS febSum,
SUM(IIf(month(rideDate)=3, rideDistance, 0)) AS marSum,
SUM(IIf(month(rideDate)=4, rideDistance, 0)) AS aprSum,
SUM(IIf(month(rideDate)=5, rideDistance, 0)) AS maySum,
SUM(IIf(month(rideDate)=6, rideDistance, 0)) AS junSum,
SUM(IIf(month(rideDate)=7, rideDistance, 0)) AS julSum,
SUM(IIf(month(rideDate)=8, rideDistance, 0)) AS augSum,
SUM(IIf(month(rideDate)=9, rideDistance, 0)) AS sepSum,
SUM(IIf(month(rideDate)=10, rideDistance, 0)) AS octSum,
SUM(IIf(month(rideDate)=11, rideDistance, 0)) AS novSum,
SUM(IIf(month(rideDate)=12, rideDistance, 0)) AS decSum
FROM mileageLog
WHERE riderId IN (<cfqueryparam value="#riderList#"
cfsqltype="the column type here" list="true"> )
AND Year(rideDate)=#useYear#
GROUP BY riderId
ORDER BY riderId -
Query Tuning - using CASE statement in the WHERE clause
Hi All,
My query has been modified to use a CASE statement in the WHERE clause to consider data from certain columns based on a parameter value. This modified query is doing a full table scan and running endlessly. Please suggest what may be done to improve its performance:
Query:
SELECT LAST_DAY(TRUNC(TO_TIMESTAMP(os.requestdatetime, 'yyyymmddhh24:mi:ss.ff4'))) AS summary_date,
os.acctnum,
os.avieworigin_refid,
COUNT(1) cnt_articleview,
SUM(NVL(autocompletedterm,0)) cnt_autocompletedterm
FROM TABLE1 os
WHERE os.acctnum IS NOT NULL
AND os.avieworigin_refid IS NOT NULL
AND os.requestdatetime IS NOT NULL
AND UPPER(os.success_ind) = 'S'
AND CASE WHEN
Param_ValueToCheck = 'FULL' AND get_date_timestamp(os.requestdatetime) BETWEEN
TO_DATE('01-MAY-2011 00:00:00','DD-MON-YYYY HH24:MI:SS') AND
TO_DATE('31-MAY-2011 00:00:00','DD-MON-YYYY HH24:MI:SS')
THEN 1
WHEN
Param_ValueToCheck = 'INCR' AND os.entry_createddate BETWEEN
TO_DATE('01-MAY-2011 00:00:00','DD-MON-YYYY HH24:MI:SS') AND
TO_DATE('31-MAY-2011 00:00:00','DD-MON-YYYY HH24:MI:SS')
THEN 1
END = 1
AND CASE WHEN
Param_ValueToCheck = 'FULL' AND os.entry_CreatedDate BETWEEN
TO_DATE('01-APR-2011 00:00:00','DD-MON-YYYY HH24:MI:SS') AND
TO_DATE('07-JUN-2011 00:00:00','DD-MON-YYYY HH24:MI:SS')
THEN 1
WHEN
Param_ValueToCheck = 'INCR' THEN 1
END = 1
GROUP BY LAST_DAY(TRUNC(TO_TIMESTAMP(os.requestdatetime, 'yyyymmddhh24:mi:ss.ff4'))), os.acctnum,os.avieworigin_refid;Table Description:
(Number of rows : approx > 600,000,000)
Name Null Type
ARTICLEID NOT NULL NUMBER(20)
USERKEY NUMBER(10)
AVIEWORIGIN_REFID VARCHAR2(10)
SUCCESS_IND VARCHAR2(2)
ENTRY_CREATEDDATE DATE
CREATED_BY VARCHAR2(10)
FILENUMBER NUMBER(10)
LINENUMBER NUMBER(10)
ACCTNUM VARCHAR2(10)
AUTOCOMPLETEDTERM NUMBER(2)
REQUESTDATETIME VARCHAR2(19)Explain Plan
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
Plan hash value: 2224314832
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
| 0 | SELECT STATEMENT | | 590 | 33040 | 2501K (1)| 08:20:15 | | |
| 1 | HASH GROUP BY | | 590 | 33040 | 2501K (1)| 08:20:15 | | |
| 2 | PARTITION RANGE ALL| | 590 | 33040 | 2501K (1)| 08:20:15 | 1 |1048575|
|* 3 | TABLE ACCESS FULL | TABLE1 | 590 | 33040 | 2501K (1)| 08:20:15 | 1 |1048575|
PLAN_TABLE_OUTPUT
Predicate Information (identified by operation id):
3 - filter(UPPER("OS"."SUCCESS_IND")='S' AND CASE WHEN ('FULL'='FULL' AND
"OS"."ENTRY_CREATEDDATE">=TO_DATE(' 2011-04-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
"OS"."ENTRY_CREATEDDATE"<=TO_DATE(' 2011-06-07 00:00:00', 'syyyy-mm-dd hh24:mi:ss')) THEN 1 WHEN
'FULL'='INCR' THEN 1 END =1 AND "OS"."REQUESTDATETIME" IS NOT NULL AND CASE WHEN ('FULL'='FULL'
AND "ODS"."GET_DATE_TIMESTAMP"("REQUESTDATETIME")>=TO_DATE(' 2011-05-01 00:00:00', 'syyyy-mm-dd
hh24:mi:ss') AND "ODS"."GET_DATE_TIMESTAMP"("REQUESTDATETIME")<=TO_DATE(' 2011-05-31 00:00:00',
'syyyy-mm-dd hh24:mi:ss')) THEN 1 WHEN ('FULL'='INCR' AND "OS"."ENTRY_CREATEDDATE">=TO_DATE('
2011-05-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "OS"."ENTRY_CREATEDDATE"<=TO_DATE('
PLAN_TABLE_OUTPUT
2011-05-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss')) THEN 1 END =1 AND "OS"."ACCTNUM" IS NOT NULL AND
"OS"."AVIEWORIGIN_REFID" IS NOT NULL)Edited by: Chaitanya on Jun 9, 2011 2:44 AM
Edited by: Chaitanya on Jun 9, 2011 2:47 AMHi Dom,
Modified Query:
SELECT LAST_DAY(TRUNC(TO_TIMESTAMP(os.requestdatetime, 'yyyymmddhh24:mi:ss.ff4'))) AS summary_date,
os.acctnum,
os.avieworigin_refid,
COUNT(1) cnt_articleview,
SUM(NVL(autocompletedterm,0)) cnt_autocompletedterm
FROM TABLE1 os
WHERE os.acctnum IS NOT NULL
AND os.avieworigin_refid IS NOT NULL
AND os.requestdatetime IS NOT NULL
AND UPPER(os.success_ind) = 'S'
AND (('FULL' = 'FULL'
AND (get_date_timestamp(os.requestdatetime) BETWEEN TO_DATE('01-MAY-2011 00:00:00','DD-MON-YYYY HH24:MI:SS')
AND TO_DATE('31-MAY-2011 00:00:00','DD-MON-YYYY HH24:MI:SS')
AND os.entry_CreatedDate BETWEEN TO_DATE('01-APR-2011 00:00:00','DD-MON-YYYY HH24:MI:SS')
AND TO_DATE('07-JUN-2011 00:00:00','DD-MON-YYYY HH24:MI:SS')
OR ('FULL' = 'INCR'
AND os.entry_createddate BETWEEN TO_DATE('01-MAY-2011 00:00:00','DD-MON-YYYY HH24:MI:SS')
AND TO_DATE('31-MAY-2011 00:00:00','DD-MON-YYYY HH24:MI:SS') ))
GROUP BY LAST_DAY(TRUNC(TO_TIMESTAMP(os.requestdatetime, 'yyyymmddhh24:mi:ss.ff4'))), os.acctnum,os.avieworigin_refid;Execute Plan:
PLAN_TABLE_OUTPUT
Plan hash value: 3615447714
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | Pstart| Pstop |
| 0 | SELECT STATEMENT | | 25125 | 1374K| | 407K (1)| 01:21:36 | | |
| 1 | HASH GROUP BY | | 25125 | 1374K| 3768K| 407K (1)| 01:21:36 | | |
| 2 | PARTITION RANGE ITERATOR| | 25125 | 1374K| | 407K (1)| 01:21:32 | 29 | 31 |
|* 3 | TABLE ACCESS FULL | TABLE1 | 25125 | 1374K| | 407K (1)| 01:21:32 | 29 | 31 |
PLAN_TABLE_OUTPUT
Predicate Information (identified by operation id):
3 - filter("OS"."ENTRY_CREATEDDATE">=TO_DATE(' 2011-04-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
UPPER("OS"."SUCCESS_IND")='S' AND "OS"."REQUESTDATETIME" IS NOT NULL AND
"ODS"."GET_DATE_TIMESTAMP"("REQUESTDATETIME")>=TO_DATE(' 2011-05-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
"ODS"."GET_DATE_TIMESTAMP"("REQUESTDATETIME")<=TO_DATE(' 2011-05-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
"OS"."ACCTNUM" IS NOT NULL AND "OS"."AVIEWORIGIN_REFID" IS NOT NULL AND "OS"."ENTRY_CREATEDDATE"<=TO_DATE('
2011-06-07 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))Edited by: Chaitanya on Jun 9, 2011 4:51 AM -
Using a Procedure in the FROM clause of a query
Is it possible to use a Procedure that accepts multiple parameters and returns multiple parameters in the FROM section of a query?
I have a Procedure that formats a postal address from BS7666 format into an Oracle Apps friendly format.
I'd like to be able to select the data from the source, feed it through this procedure and output it as part of a Materialised View.
PROCEDURE Format_llpg_Address
In_Loc IN VARCHAR2,
In_Description IN VARCHAR2,
In_County IN VARCHAR2,
In_Town IN VARCHAR2,
In_PostTown IN VARCHAR2,
In_Saon_Start_num IN NUMBER,
In_Saon_Start_Suffix IN VARCHAR2,
In_Saon_End_num IN NUMBER,
In_Saon_End_Suffix IN VARCHAR2,
In_Saon_Text IN VARCHAR2,
In_Paon_Start_num IN NUMBER,
In_Paon_Start_Suffix IN VARCHAR2,
In_Paon_End_num IN NUMBER,
In_Paon_End_Suffix IN VARCHAR2,
In_Paon_Text IN VARCHAR2,
In_PostCode IN VARCHAR2,
Out_Address1 OUT NOCOPY VARCHAR2,
Out_Address2 OUT NOCOPY VARCHAR2,
Out_Address3 OUT NOCOPY VARCHAR2,
Out_Town OUT NOCOPY VARCHAR2,
Out_County OUT NOCOPY VARCHAR2,
Out_PostCode OUT NOCOPY VARCHAR2)
Many Thanks,
Jason.You should look at [pipelined functions|http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28370/tuning.htm#i52954]
Adrian Billington has a number of excellent articles on pipelined functions.
Here's a [link to one of them|http://www.oracle-developer.net/display.php?id=207]
Edited by: dombrooks on Oct 12, 2009 4:45 PM -
Using a variable in the 'LIKE' part of a WHERE clause
How would I go about achieving this?
I have SELECT...WHERE person_number LIKE '123%';
While keeping the percent symbol, how would I substitute and explicit value with an implicit reference to a variable I have already assigned a value to?
Thanks a lot.not sure if this is what you require, but you can simply concatenate your variable with '%'
for example;
SQL> select * from emp1 where job like 'A%';
EMPNO JOB START_DAT SAL DEPT
3 Author
4444 AUTHOR 24-MAY-10 5001 3
3333 ANALYST 24-MAY-09 5004 2
SQL> variable prefix char(1);
SQL> exec :prefix :='A';
SQL> select * from emp1 where job like :prefix||'%';
EMPNO JOB START_DAT SAL DEPT
3 Author
4444 AUTHOR 24-MAY-10 5001 3
3333 ANALYST 24-MAY-09 5004 2 -
Using OR operator in the WHERE clause in Oracle BI
Hi, i am using Oracle BI EE 10.1.3.3.3.
I construct the simple report in BI Answers on the Accounts presentation layer, and use the following filter clause:
"WHERE (AccountNum BETWEEN '441' and '473') OR (БалСчет1Порядка BETWEEN '501' and '519')"
Then i look in the cursor cache and find the real query which is going to database, and it's "where" clause now is:
"where ( (T45172.BA >= '441' or T45172.BA >= '501') and
(T45172.BA >= '441' or T45172.BA <= '519') and
(T45172.BA >= '501' or T45172.BA <= '473') and
(T45172.BA <= '473' or T45172.BA <= '519') ) "
Why BI create so many expressions instead of the source 2 expressions?
How can i force BI to use the source expressions?I have the same settings too.
I post the following query in the Administration web interface, and set the maximum logging level (7):
SELECT "Plan Account"."Balance Account" saw_0
FROM "Plan Account"
WHERE ("Plan Account"."Balance Account" between '441' and '473')
OR ("Plan Account"."Balance Account" between '501' and '519')
ORDER BY saw_0
And got the following BI execution plan:
RqList <<5619441>> [for database 0:0,0] distinct D1.c1 as c1 [for database 3023:44913,46]
Child Nodes (RqJoinSpec): <<5619450>> [for database 3023:44913:DB,46]
RqList <<5619277>> [for database 3023:44913:DB,46]
D1.c1 as c1 GB [for database 3023:44913,46]
Child Nodes (RqJoinSpec): <<5619360>> [for database 3023:44913:DB,46]
RqList <<5619284>> [for database 3023:44913:DB,46]
Dim - Plan Account.BA as c1 GB [for database 3023:44913,46]
Child Nodes (RqJoinSpec): <<5619350>> [for database 3023:44913:DB,46]
TB_PLAN_ACCOUNT T45172
DetailFilter: (not Dim - Plan Account.BA < '441' or not Dim - Plan Account.BA < '501') and (not Dim - Plan Account.BA < '441' or not '519' < Dim - Plan Account.BA) and (not Dim - Plan Account.BA < '501' or not '473' < Dim - Plan Account.BA) and (not '473' < Dim - Plan Account.BA or not '519' < Dim - Plan Account.BA) [for database 0:0]
) as D1
) as D1
OrderBy: c1 asc [for database 0:0,0]
and following query sent to database:
-------------------- Sending query to database named DB (id: <<5619277>>):
select distinct D1.c1 as c1
from
(select distinct T45172.BA as c1
from
TB_PLAN_ACCOUNT T45172 /* Dim - Plan Account */
where ( (T45172.BA >= '441' or T45172.BA >= '501') and (T45172.BA >= '441' or T45172.BA <= '519') and (T45172.BA >= '501' or T45172.BA <= '473') and (T45172.BA <= '473' or T45172.BA <= '519') )
) D1
So, i got the same bad where clause...
What can you advice? -
Whats the alternate for left join with using IN operator in the where claus
My senario...
Select t1.f1, t1.f2, t2.f3
From t1, t2
Where ...
t1.f1> (+) IN t2.f1
...alternate query..
Select t1.f1, t1.f2, t2.f3
From t1, t2
Where ...
(t1.f1> IN t2.f1 or 1=1)
...will the alternate query satisfy the above senario..?I'm not quite sure I've understood what the OP's question is, but will ANSI syntax deal with it?
SQL> ed
Wrote file afiedt.buf
1 with a as (select 1 as num, 2 as data from dual union all
2 select 2 as num, 3 as data from dual union all
3 select 3 as num, 4 as data from dual),
4 b as (select 1 as num, 5 as data from dual union all
5 select 3 as num, 7 as data from dual)
6 -- END OF TEST DATA
7 select a.num, a.data, b.data
8* from a LEFT OUTER JOIN b ON (a.num = b.num AND b.num IN (3))
SQL> /
NUM DATA DATA
3 4 7
1 2
2 3
SQL> -
VPD - How to make the where clause a correlated query
Hi,
My VPD function has the following where clause:
where_clause:= ' project_id in (select object_id from pa_project_classes p'||
' where p.class_category='||''''||l_cat||''''||
' and p.CLASS_CODE='||''''||l_class||''''||
' and p.OBJECT_TYPE=''PA_PROJECTS'''||
The problem is that the subquery is not using the unique key defined on the table pa_project_classes. What I need is something as follows:
where_clause:= ' project_id in (select object_id from pa_project_classes p'||
' where p.class_category='||''''||l_cat||''''||
' and p.CLASS_CODE='||''''||l_class||''''||
' and p.OBJECT_TYPE=''PA_PROJECTS'''||
' and p.object_id=mainquery.project_id ||
The problem is that since the table pa_project_classes also has a column project_id, I have to prefix the column name by the alias of the main query like 'mainquery.project_id'. However this seems impossible as main query is not unknown .
I would be grateful if you could suggest any workaround or solution.
ThanksJust have a look over these two statements if it solves your problem
one time where clause
Set_Block_Property('BLOCK_NAME',ONETIME_WHERE,your form item);
dynamic where clause
set_block_property('BLOCK_NAME'default_where, your form itme)
you can where clause at run time from any procedure or some triggers
Maybe you are looking for
-
Can I hard wire connect the time capsule to my iMac
I have been told to not use wireless connections when iPhoto library is on external disc. Can I hard wire connect the time capsule external drive. I have found nothing showing or telling me exactly yes or no.
-
ALV GRID capable to trigger multiple pages
Hi All, I need some help on ALV grid display. My requirement is : I have got all my required data inside my final o/p internal table. The first 2 columns of my o/p int table are MATNR (material no) and Location. Now whenever this combination of MATNR
-
WWI - pdf printing problems on Windows Vista
At the moment the workstations are being upgraded from Windows 2000 untill Windows Vista 32 bit (it's a big company....) At the Vista machines there are problems with WWI and PDF printing. At the windows 2000 workstations there is no problem. The LPF
-
Reversing Single Entry in Incoming Payment
Dear Experts, I want to reverse a single invoice entry from an incoming payment which contains knocking off multiple invoices. Let's suppose i have knocked-off Invoice 1,2, and 3 in an incoming payment, and now i have to reverse the entry of Invoice
-
URLs created in Click Boxes won't open in published file
Hi - I have a series of click boxes in several modules that point to URLs. The links don't work in the published module, but work fine in preview mode (both preview and preview in browser). What can cause the links to not open? I hear a click sound