operator case where clause date comparison
Hi can please help for query teas comparsion date based on requirements is
I could use decode in the application to manage the two scenarios (decode orig enrl
to date, if < = 12/01/15 then use 1/12/15 + 25 as the date for comparison, otherwise use
date enrl orig + 25
can u help for these
tried to decode also
/ * AND
To_date (get_attr_usage_val (7599,docr.org_prog_cam_recipient_id),'MM/DD/YYYY') < =)
Decode (to_date('01/12/2015','MM/DD/YYYY'),
TO_DATE (JANUARY 12, 2015 "," MM/DD/YYYY "") + 25,.
To_date (get_attr_usage_val (7599,docr.org_prog_cam_recipient_id),'MM/DD/YYYY'))
*/
Sorry for the delay to ask, thank you very much for the reply
in above query
It's feature column used to join date: (trunc (sysdate) - TO_DATE (get_attr_usage_val (7599,docr.org_prog_cam_recipient_id),'MM/DD/YYYY')))
AND if (trunc (sysdate) - TO_DATE (get_attr_usage_val (7599,docr.org_prog_cam_recipient_id),'MM/DD/YYYY')))<= to_date('01/12/2015','mm/dd/yyyy')="">=>
TO_DATE (JANUARY 12, 2015 "," MM/DD/YYYY "") + 25
another (trunc (sysdate) - TO_DATE (get_attr_usage_val (7599,docr.org_prog_cam_recipient_id),'MM/DD/YYYY'))+25
end if
for example: 1) the enrollmentdate value function
(1) If a patient registered on 01/04/2015 then wait 25 days from 12/01/2015 which 06/02/2015 before creating the event would provide that all other conditions are met.
(2) If a registered on 13/01/2015 patient can expect 25 days from the date of registration which would be 07/02/2015 before creating the event provided that all other conditions are met
AND ((TO_DATE (get_attr_usage (7599,docr.org_prog_cam),'MM/DD/YYYY'))))<=TO_DATE('01>=TO_DATE('01>
AND
To_date (get_attr_usage (7599,docr.org_prog_cam),'MM/DD/YYYY'))<=>=>
)
or
(TO_DATE (get_attr_usage (7599,docr.org_prog_cam),'MM/DD/YYYY')>TO_DATE('01/12/15','MM/DD/YYYY')))
AND
To_date (get_attr_usage (7599,docr.org_prog_cam),'MM/DD/YYYY')+25 > trunc (sysdate)))
) )
Thank you
Tags: Database
Similar Questions
-
8287 error: manual/refresh operations with Where clause
Hello
I defined a group of read-only cache
CREATE CACHE READONLY ABC GROUP
AUTOREFRESH INTERVAL 60 seconds
OF ORACLE_TABLE
I want to only load the 3 months of the underlying table for Oracle data so I don't
ABC LOADING CACHE GROUPWHEN TRUNC (date_column) > TRUNC (add_months (sysdate,-3))
COMMIT ALL 256 ROWS
4 PARALLEL;
However, I get the error message
8287: manual LOADING/REFRESH with clauses WITHID or WHERE operations are not be allowed on ABC Group cache because it is specified as AUTOREFRESH
The command failed.
What should I do to load the data of 3 months only if possible? Can I use autorefresh?
Thanks in advance
Cache AUTOREFRESH groups to include the WHERE clause in the definition of Group of cache. For example, if drop you in Oracle's:
CREATE TABLE MYDATE
(
C1 VARCHAR2 (10) NOT NULL PRIMARY KEY,
C2 DATE NOT NULL
);
Then your cache group definition would look like this:
CREATE CACHE READONLY ABC GROUP
AUTOREFRESH INTERVAL OF 60 SECONDS
OF MYDATE
(
C1 VARCHAR2 (10) NOT NULL PRIMARY KEY,
C2 DATE NOT NULL
)
WHEN TRUNC (c2) > TRUNC (add_months (sysdate,-3));
And then you would load by using
ABC LOADING CACHE GROUP
COMMIT ALL 256 ROWS
4 PARALLEL;
As auto refreshes occur time passes, all the data that falls outside the range will be removed from the cache and new data that now lying in the range will be added to the cache.
Chris
-
How to use the instruction box in where clause
Hi all
I need to use cases where clause guide me please how I can do it.
AND WHEN BOX: KAPCO = "KAPCO" THEN cla. CLASS_NAME LIKE '% KAPCO % '.
WHEN: KAPCO = "NON_KAPCO" THEN SUPERIOR (cla. CLASS_NAME) NOT LIKE '% KAPCO % '.
WHEN: KAPCO = 'ALL' GOLD: KAPCO IS NULL SO SUPERIOR (cla. CLASS_NAME) LIKE '% '.
END
Concerning
Published by: user10941925 on March 4, 2012 22:31Hello
CASE expressions return a single value, for example a VARCHAR2. They do refer to code fragments.
You usually don't need (or want) an expression BOX in a WHERE clause, or any other condition. I think that you were trying to do the equivalent of:
AND ( (:KAPCO = 'KAPCO' AND cla.CLASS_NAME LIKE '%KAPCO%') -- Don't you want UPPER on this line? OR (:KAPCO = 'NON_KAPCO' AND UPPER(cla.CLASS_NAME) NOT LIKE '%KAPCO%') OR (NVL (:KAPCO, 'ALL') = 'ALL' AND cla.CLASS_NAME IS NOT NULL) )
If you would care to post some sample data (CREATE TABLE and INSERT statements) and the results desired from this data, I was able to test this.
-
Case with where clause - ORA-00920: invalid relational operator
Hi all, when I try to run the following query, I get the following error...
ORA-00920: invalid relational operator
00920 00000 - "invalid relational operator.
* Cause:
* Action:
Error on line: column 16: 5
Anyone know what the problem with my request? Thanks in advance.
SELECT concat (year, period)
OF DD_ACTUALS_FACT
CASE WHERE period
WHEN 'JAN' THEN '01'
WHEN 'FEB' THEN '02'
WHEN 'MAR' THEN ' 03 "
WHEN "APR" THEN ' 04 "
WHEN 'CAN' THEN ' 05 "
WHEN "JUN" THEN '06'
WHEN 'JUL' THEN '07'
WHEN 'AUG' THEN '08'
WHEN 'MS' THEN '09'
WHEN 'OCT' THEN '10'
WHEN 'NOV' THEN '11'
WHEN 'DEC' THEN '12'
END as number 'months '.
ORDER OF CONCAT (year, number 'months') / / DESC
The problem is the number 'month' - you cannot give an "ACE" alias for an expression in a where clause clause.
You have not really given any condition, that a set of translations of period in a number.
Also, you didn't say what you're trying to do.
Maybe you want to:
SELECT concat (year, period)
OF DD_ACTUALS_FACT
WHERE something
ORDER OF CONCAT (year, period of the CASE
WHEN 'JAN' THEN '01'
WHEN 'FEB' THEN '02'
WHEN 'MAR' THEN ' 03 "
WHEN "APR" THEN ' 04 "
WHEN 'CAN' THEN ' 05 "
WHEN "JUN" THEN '06'
WHEN 'JUL' THEN '07'
WHEN 'AUG' THEN '08'
WHEN 'MS' THEN '09'
WHEN 'OCT' THEN '10'
WHEN 'NOV' THEN '11'
WHEN 'DEC' THEN '12'
END DESC)
/
-
Where Clause condition - using CASES in which clause
I generate data based on certain criteria of dates as below:
I need to create a report based on the CLOSE_DATE COLUMN,If SYSDATE < 15 of the month can generate report on CLOSE_DATE between the 1st to the 15th of the current month
If SYSDATE > 15th of the month and then generate report on CLOSE_DATE between the 16th of this month and the last day of the next month.I tried, but could not get to the query
SELECT scheme_code, MODEL_NAME, close_date
Plans OF
WHERE)
BOX WHEN to_number (to_char(close_date,'DD')) > 15
THEN close_date BETWEEN trunc (trunc (SYSDATE, 'MM') + 15) AND last_day (add_months(SYSDATE,1))
WHEN to_number (to_char(close_date,'DD')) < 15
THEN close_date BETWEEN trunc(SYSDATE,'MM') AND trunc (trunc(SYSDATE,'MM') + 15)
(END);where nearby date between the two cases when to_number (to_char (close_date, 'DD') > 15 then... else... end and case... when... then... else... end would be the right structure)
in other words, you can use cases coming with each of these two values for him between the comparison. Do not use case to inject arbitrary clauses
-
Tuning - using the CASE statement in the WHERE clause of the query
Hi all
My request has been changed to use a CASE statement in the WHERE clause to examine the data to some columns based on a parameter value. This modified request is made a full table and constantly running scan. Please suggest what can be done to improve its performance:
Query:
Description of the table: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;
(Number of lines: approx. > amount 600 000 000)
Explain PlanName 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)
Published by: Chaitanya on June 9, 2011 02:44SQL> 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)
Published by: Chaitanya on June 9, 2011 02:47When it is executed individually, MERGE LOGIC 1 and LOGIC of MERGE 2 take about ten for a daterange of 30 days data.
BUT FULL is to get the scores of APR - JUN, INCR becomes partitions for MAY so not both 30 days.
Are compare us like with like? -
Cannot run a «BUSINESS...» WHEN ' with a date in a WHERE CLAUSE condition
Hello
I need to check for a condition and date according to the date, he would check a set of host names or the other game... so I thought I could write something like this in the WHERE clause:
AND HOST_NAME IN (
CASE
WHEN TO_DATE (: StopDate, 'MON-DD-YYYY') > = TO_DATE ('22 - DEC - 2015 "," DD-MON-YYYY ') THEN
('SERVERNAMEA', 'SERVERNAMEB', 'SERVERNAMEC') ON THE OTHER
("SERVERNAME1", "NAMESERVER2", "SERVERNAME3")
END
)
I get the following:
ORA-00907: lack of right parenthesis
00907 00000 - "lack the right parenthesis.
But there is no missing parentheses!
If I take the case... when... end, and run the host_name in ('SERVERNAMEA', 'SERVERNAMEB', 'SERVERNAMEC') (separately, they run fine)...
I also tried:
AND
( CASE
WHEN TO_DATE (: StopDate, 'MON-DD-YYYY') > = TO_DATE ('22 - DEC - 2015 "," DD-MON-YYYY ') THEN
HOST_NAME IN ('SERVERNAMEA', 'SERVERNAMEB', 'SERVERNAMEC') ELSE
HOST_NAME IN ('SERVERNAME1","NAMESERVER2","SERVERNAME3")
END
)
the error I get is:
ORA-00905: lack of keyword
00905 00000 - 'lack the key word'
What keyword miss me?
Post edited by: c75d2e42-06a0-4eb1-a576-5652edcbfbe8
Hello
c75d2e42-06a0-4eb1-A576-5652edcbfbe8 wrote:
It was a typo when transferred to the Oracle forum... the version of Oracle is: PL/SQL version 10.2.0.3.0 (10 G)
I also used IF the statement and that has not worked (in error "missing parenthesis") which I'm sure is a matter of "syntax"... I did not know that the CASE statement returns the value single only, so it's probably the problem. Is it possible to re - write this?
...
IF only works in PL/SQL. It does not in SQL, even if that SQL is embedded in PL/SQL.
There are many ways to re - write the condition. And here's one:
AND ((host_name IN ('SERVERNAMEA', 'SERVERNAMEB', 'SERVERNAMEC')
AND TO_DATE (: StopDate, "MON-DD-YYYY") > = TO_DATE ('22-DEC-2015', "MON-DD-YYYY")
)
OR (host_name IN ('servername1","Nameserver2","SERVERNAME3")
AND TO_DATE (: StopDate, "MON-DD-YYYY")< to_date="" ('dec-22-2015', =""> >
)
)
If: StopDate can be NULL, it must be a bit more complicated.
You can also use nested, such as CASE expressions
AND THE CASE
WHEN TO_DATE (: StopDate, "MON-DD-YYYY") > = TO_DATE ('22-DEC-2015', "MON-DD-YYYY")
WHILE CASE
WHEN host_name IN ('SERVERNAMEA', 'SERVERNAMEB', 'SERVERNAMEC')
AND THEN 'OK '.
END
OTHER CASES
WHEN host_name IN ('servername1","Nameserver2","SERVERNAME3")
AND THEN 'OK '.
END
END = 'OK '.
I wonder if this in your application is the best way, however. If SERVERNAMEA was put into service on December 22, maybe that that fact should be recorded in a table. If you have a table with 1 row per server, you can consider adding 2 columns DATE to show when the server was first and last used. Then, rather than use a WHERE clause to test servers appropriate, you could do an inner join.
-
Problem with the case where the clause
Hello
I want to use cases in which clause. I wrote a very simple query to test how it works. However, I always got an error message. Here's what I did.
Select eid, firstname, lastname from employee where eid = 1 works fine
Select eid, name, name of the employee
where
cases where 1 = 1 then eid = 1
When 1! = 1 then eid = 2
end
I ORA-00905: lack of keyword.
Did I miss something?
Thank you
Jennifer
Hi, Jennifer.
Why do you want to use BOX in a WHERE clause? The wonderful thing about the CASE is that it allows you to do IF-THEN-ELSE logic. In a SELECT clause, or an ORDER BY clause, this is really useful, but the WHERE clause already allows you to use the IF-THEN-ELSE logic.
However, if you use the BOX in a WHERE clause, it is as it does nowhere else. Always BARGAIN instead of a single expression in a SQL data types. All the clauses THEN (and ELSE, if there is one) must return a single expression, such as the NUMBER. (There is no BOOLEAN data type in SQL). So, you can use a CASE statement like this:
...
CASES WHERE
WHEN 1 = 1 THEN 1
WHEN 1! = 1 THEN 2
END = eid
Here, the CASE expression takes the place of a NUMBER.
However, if I was not sure if 1 = 1 or not, I would write the condition in this way, without a CASE expression:
WHERE (1 = 1 AND eid = 1)
OR (1! = 1 AND eid = 2).
-
No output for report of XML editor using CASE/DECODE in a Where Clause
Hello
I have a requirement of the company to modify an existing report that has two input parameters,
-> p_statcode (closed status) which may have values "Y" or "n".
-> p_overdue (flag late), which can have values of "Y" or "n".
The flag late is a column evaluated with O/N values and it is evaluated as follows,
The requirement of user now is that they must be a third option for setting called p_overdue ALL,ONTF_MOD_VAL(NVL ( (TRUNC (SYSDATE) - (TO_DATE (oe_order_lines.attribute18, 'DD-MON-RRRR') + TO_NUMBER (fnd_lookup_values.meaning))), 0 )) overdue_flag
which by the way the output should include records with
p_statcode is p_statcode ELSE is N AND Y OR p_overdue p_overdue is N
In other words records with raising the Y and N for flag late must be returned regardless of the value given to the closed state.
Original where clause contained in the data definition file is as follows,
My modified code is the following,WHERE Closed_Status = nvl(:p_statcode,Closed_Status) AND overdue_flag = nvl(:p_overdue,overdue_flag)
ORWHERE Closed_Status = NVL (:p_statcode, Closed_Status) AND overdue_flag = (CASE WHEN :p_overdue = 'Y' THEN 'Y' WHEN :p_overdue = 'N' THEN 'N' ELSE overdue_flag END)
Both approaches have the same problem.WHERE Closed_Status = NVL (:p_statcode, Closed_Status) AND overdue_flag = DECODE (:p_overdue, 'Y', 'Y', 'N', 'N',overdue_flag)
The output is in EXCEL format. The modified query works very well for p_overdue as Y or N but when p_overdue is passed as ALL he returned a blank EXCEL sheet with just exit report column headings.
Any help regarding, why is this the case? What's not in my approach?
Kind regards
Vishalunclear on p_overdue = ALL
P_overdue = ALL on what necessary values?try sth like
WHERE Closed_Status = NVL (:p_statcode, Closed_Status) AND ( overdue_flag = DECODE (:p_overdue, 'Y', 'Y', 'N', 'N',overdue_flag) and :p_overdue != 'ALL' or :p_overdue = 'ALL' and (overdue_flag = 'Y' or overdue_flag = 'N') )
for overdue_flag, which has more then 'Y' values of "n".
If overdue_flag that in ('Y', ' don't) thenWHERE Closed_Status = NVL (:p_statcode, Closed_Status) AND ( overdue_flag = DECODE (:p_overdue, 'Y', 'Y', 'N', 'N',overdue_flag) and :p_overdue != 'ALL' or :p_overdue = 'ALL' )
-
Case statement in a WHERE clause
Gurus,
Im trying to avoid Union of several select statements using a CASE inside a WHERE clause. When the parameter is defined as "What's new" it is advisable to use a code and for "Update Items" another condition.
Having a problem with the following... I know that BOX in WHEREs instructions are allowed only can not make it work for this one.
Points for correct and helpful answers!and case when 'New Items' = 'xxx' --p_item_status then msi.creation_date = msi.last_update_date when 'Updated Items' = 'bbb' --p_item_status then msi.creation_date != msi.last_update_date else 1=1 end;
Published by: sreese on March 27, 2012 17:51Hello
The great thing about CASE expressions, is that they allow you to use a login IF-THEN-ELSE in the clause SELECT, the ORDER BY clause or anywhere else. The WHERE clause has its own way to IF-THEN-ELSE logic, so even if you can use a CASE expression in a clause WHERRE, it usually does not help anything. You can do somehting like this:
WHERE ( :p_item_status = 'New Items' AND msi.creation_date = msi.last_update_date ) OR ( :p_item_status = 'Updated Items' AND msi.creation_date != msi.last_update_date ) OR ( :p_item_status NOT IN ( 'New Items' , 'Updated Items' ) )
This guess: p_item_status is not NULL.
If: p_item_status can be NULL, and you want to include all the lines where it is, and then change the last condition toOR ( NVL (:p_item_status, 'OK') NOT IN ( 'New Items' , 'Updated Items' ) )
I hope that answers your question.
If not, post a small example of data (CREATE TABLE and INSERT, only relevant columns instructions), some values of the parameter and the expected results of these data for each value of the parameter.
Explain, using specific examples, how you get these results from these data.
Always tell what version of Oracle you are using. -
Comparison of nulls in where clause
Hi team,
I want to select the data in the table based on some condition.
The problem is the data that I have to look in where clause is null or has a certain value.
The data are unknown so I can not use "is null" because if the data is not null then I have to use the '=' operator.
Please suggest a way to handle this situation, example below make the situation clearer for you.
I want data retirve that matches the current value of variable value1, value2, value3.
Name of the table:-DEMO(A,B,C)
A, B AND C
1 2 null
3 5 null
6 7 8
Select A, B, C of demo where A = 1 and B = value2 and c = value3;
Value1, value2, value3 are the variables that have some that can also be null.
If value1 or value2 value 3 having null that the above query does not work because I have to use to compare null values is null.
Please suggest me the query from right or procedure to deal with the current scenario.Hello
DECODE treats NULL as a value, so you can do something like
SELECT a, b, c FROM demo WHERE DECODE (a, value1, 'OK') = 'OK' AND DECODE (b, value2, 'OK') = 'OK' AND DECODE (C, value3, 'OK') = 'OK' ;
-
using case when statement or decode unfavorable in where clause
Hi the gems...
I have a problem in the following query...
I try to use when case statement in where clause of a select query.
Select cr.customer_name. ' - ' || CR.customer_number as cust_name,
CR. Salary salary
of customer_details cr
where (case when ' > ' = ' > ' then ' cr.salary > 5000')
When ' > ' = ' < ' then ' cr.salary < 5000'
When ' > ' = '=' and then 'cr.salary = 5000'
Another null
(end);
the expression in the when clause of the statement of the case, when comes from HQ and according to the choice I have to make the where clause.
That is why, for the execution of the query, I put ' > ' in this place.
If the original query will look like this (for reference):
Select cr.customer_name. ' - ' || CR.customer_number as cust_name,
CR. Salary salary
of customer_details cr
where (case when variable = ' > ' then ' cr.salary > 5000')
When the variable = ' < ' then ' cr.salary < 5000'
When the variable = '=' and then 'cr.salary = 5000'
Another null
(end);
so, in a real case, if the user selects ' > ' then the filter will be ' where cr.salary > 5000.
If the user selects ' < ' then the filter will be ' where cr.salary < 5000.
If the user selects '=', then the filter will be 'where cr.salary = 5000 '.
but I get the error "ORA 00920:invalid relational operator.
Help, please... Thanks in advance...Hello
select cr.customer_name || ' - ' ||cr.customer_number as cust_name, cr.salary as salary from customer_details cr where ( v_variable = 'bigger' and cr.salary > 5000 ) or ( v_variable = 'less' and cr.salary < 5000 ) or ( v_variable = 'eq' and cr.salary = 5000 )
Published by: user6806750 on 22.12.2011 14:56
For some reason that I can't write in sql "<', '="">", "=".',>
-
Cannot export data so WHERE clause AND/OR
I am able to export the results of a query if the WHERE clause has only one condition. But if there are and AND or a RC, you can right-click and choose export data, but nothing happens.
For example, the following text exports very well:
SELECT * FROM DUAL
WHERE ROWNUM = 1;
But throw in an 'AND', and it will not be exported:
SELECT * FROM DUAL
WHERE ROWNUM = 1 AND ROWNUM < 2;
I'm running worm 1.5.3 and did not apply the patches.Unfortunately, in the framework of trying to solve other problems with the export feature, 1.5.3 presented problems where certain types of SQL statements would not export (nothing happened like you are seeing or reports of the errors like ORA-936). While it is not yet perfect, 1.5.5 manages exporters results much better (it fits your case who fails in 1.5.3), then I would say that you upgrade to 1.5.5.
theFurryOne
-
A CASE statement with additional where clause
Hi all
I need assistance in which this obligation clause
Table:-balance_table
Columns:-balance_type, balance_amount, balance_month, budget_name
balance_type column had given 'Real' OR 'Budget '.
Now I am trying to extract data such as: if: entered_month is Mar-2009 then before and including Mar-2009 will show real balance sheet Date and after Mar-2009 will show budget data.
It works fine, I need to add a condition more restrict the budget name, there are several budget_name in the table for balance_type = 'Budget '.
SELECT SUM (balance_amount), balance_type, balance_month
OF balance_table
WHERE balance_type =
(CASE
WHEN balance_month < =: entered_month
THEN 'real '.
ANOTHER 'Budget '.
END
)
AND budget_name = 'BUDGET1.
Balance_type GROUP, balance_month
Stated above is erroneous because ' AND budget_name = ' BUDGET1 "clause restricts the set of data."
Please help in contrcuting where clause 1) to sort the data according to Budget/actual and 2) for specific budgets, so budget_type = Budget
Thank you
BobinThat should do it.
SELECT SUM (balance_amount), balance_type, balance_month FROM balance_table WHERE (balance_type = 'Actual' and balance_month <= :entered_month ) or (balance_type = 'Budget' and balance_month > :entered_month and budget_name = :entered_budget_name ) GROUP BY balance_type, balance_month ORDER BY 2
See you soon
Sarma. -
long data type in where clause
Hello
I need to select in an Oracle table with a column having
Long data type and Oracle does not use this column in the
WHERE clause. Doco Oracle suggests that the columns with LARGE data types may
only be used in the select statement (not in the CASE or any other
conditional clause).
Anyone know any work around for this problem?
What is the way to see the value of long data type?
How can we use them in where clause?
We can all utility to display the specified records? There are Lakes of records...
I ned use it in where clause...
Thanks and greetings
VD
Published by: vikrant dixit on November 23, 2008 22:47So can OK we use CLOB/BLOB in where clause?
Yes, you can query the LOB columns using the package (F.ex.SUBSTR or INSTR) DBMS_LOB functions.
Why u say that the result is FTS?
This would result in FTS as you cannot index LARGE data or create a function based on the column index.
http://download.Oracle.com/docs/CD/B19306_01/server.102/b14200/sql_elements001.htm#sthref149
LONG columns cannot be indexed.
No other way to my knowledge.
You can convert the LOB column with function TO_LOB as described in
http://download.Oracle.com/docs/CD/B19306_01/server.102/b14200/functions185.htm#i79464
Published by: Sissi Kandi on November 24, 2008 12:28
Maybe you are looking for
-
I have a power on password appears on my screen, whenever I boot my HP laptop. Stop code [I 85045421]. HP 15-AC130CA.
-
Satellite Pro L10: CMOS clock stops when the OS is not running
Hello We know a reason why the cmos clock would stop when the operating system does not (phone off), the laptop is 18 months old, I've updated the bios tries to give him a good boost, but no effect, he was also in charge for 24 hours.Any advice would
-
Satellite A300-1J1 - some FN keys do not work
My FN key seems to have broken the half. When I press on it that the icons would be usually displayed on top of my screen now it doesn't and all the function keys F1 F2 F3 etc work with key except F4 which hibernates the computer, also light turn on
-
Hi, I have a serious question!When I Pc, laptop installed with manufacturing as an example HP OEM Vista Home and I lost the recovery for her image and I don't want to buy it, can I use retail or OEM no generic brand of the to reinstall using the prod
-
How can I change the size of my content in windows Vista?
I have two accounts in my Vista operating system. Somehow, I don't remember how, I set the guest account to the 'big' if my partner can read. However, my account has now by default 'big' - which means the appearance is very blurry and I can't read an