Incorrect use of the TOP clause

Hi
I need to demonstrate the use of the TOP clause, however when I run my SQL it says incorrect use of the clause.
Question: List the top 3 earners in the company( from the employees table). List employee_id, last_name, and the salary in descending order.
below is my attempt:
Select TOP 3 employee_id, last_name, salary
FROM employees
ORDER BY salary DESC;
Any assistance will be appreciated
Thanks

Imtiyaaz wrote:
Ok i've tried this:
SELECT * from
( SELECT employee_id, last_name, salary
FROM employees
ORDER BY salary
WHERE ROWNUM <= 3;
and it works but I need to display the salary in descending order, if I do this:
SELECT * from
( SELECT employee_id, last_name, salary
FROM employees
ORDER BY salary DESC
WHERE ROWNUM <= 3;
it does not display the top 3 salaries anymore but rather the first 3 rows of the table...?Are you sure that what you ran is what you posted? It works correctly for me:
SQL > select * from (
  2  select employee_id, first_name, last_name, salary
  3  from hr.employees
  4  order by salary desc )
  5  where rownum <= 3;
EMPLOYEE_ID FIRST_NAME           LAST_NAME                     SALARY
        100 Steven               King                           24000
        101 Neena                Kochhar                        17000
        102 Lex                  De Haan                        17000John

Similar Messages

  • ORA-13207: incorrect use of the [More than 2D not supported] operator

    Oracle 8.1.7.4:
    The same query works in an Oracle DB on Linux and Windows, but in a Solaris it gives me the following error:
    cc_redes_met_coaxial@ORAG2&gt; SELECT lot_f.lot_id id,
    ROUND(MDSYS.SDO_GEOM.SDO_DISTANCE(lot_geom.geometry, ped_geom.geometry, 0.5),2) dist
    FROM lot_f,
    pedestal_f,
    G_GEOMETRY_0 lot_geom,
    2 G_GEOMETRY_0 ped_geom
    WHERE lot_f.feat_num = lot_geom.feat_num
    3 AND pedestal_f.acc_point_id = 611
    AND pedestal_f.feat_num = ped_geom.feat_num
    4 AND lot_f.g_version+0 = 0
    AND (lot_f.g_next_version &gt; 0 OR lot_f.g_next_version IS NULL)
    5 AND pedestal_f.g_version+0 = 0
    6 AND (pedestal_f.g_next_version &gt; 0 OR pedestal_f.g_next_version IS NULL)
    AND MDSYS.SDO_WITHIN_DISTANCE(lot_geom.geometry, ped_geom.geometry,'distance = 100' ) = 'TRUE';
    7 8 9 10 11 12 13 14 SELECT lot_f.lot_id id,
    ERROR at line 1:
    ORA-29902: error in executing ODCIIndexStart() routine
    ORA-13207: incorrect use of the [More than 2D not supported] operator
    ORA-06512: at "MDSYS.SDO_INDEX_METHOD", line 84
    ORA-06512: at line 1
    The data is in 3D. I took a look at the trace file but no useful information. It does not have to be 2d, right?
    I can use SDO_WITHIN_DISTANCE with data in 3d, can't I?
    Does anyone know what is going on? Maybe a bug?
    Regards,
    Alex

    Daniel,
    I created the spatial index in 2d, but if I collect stats on all tables the optimizer doesn't use the spatial index.
    I tried to influence the optimizer using hints, but it seems to ignore the hint clause. The query I did is above:
    SELECT /*+ INDEX(lot_geom G_GEOMETRY_0_SI) INDEX(ped_geom G_GEOMETRY_0_SI) */
         lot_f.lot_id id,
    ROUND(MDSYS.SDO_GEOM.SDO_DISTANCE(lot_geom.geometry, ped_geom.geometry, 0.5),2) dist
    FROM lot_f,
    pedestal_f,
    G_GEOMETRY_0 lot_geom,
    G_GEOMETRY_0 ped_geom
    WHERE lot_f.feat_num = lot_geom.feat_num
    AND pedestal_f.acc_point_id = 611
    AND pedestal_f.feat_num = ped_geom.feat_num
    AND lot_f.g_version+0 = 0
    AND (lot_f.g_next_version > 0 OR lot_f.g_next_version IS NULL)
    AND pedestal_f.g_version+0 = 0
    AND (pedestal_f.g_next_version > 0 OR pedestal_f.g_next_version IS NULL)
    AND MDSYS.SDO_WITHIN_DISTANCE(lot_geom.geometry, ped_geom.geometry,
    'distance = 100' ) = 'TRUE';
    So I "forced" a plan that uses the spatial indexes deleting the statistics from the tables that have geometry columns. The execution plan looks like this:
    Execution Plan
    0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2652 Card=10182 Bytes=79969428)
    1 0 CONCATENATION
    2 1 NESTED LOOPS (Cost=876 Card=3428 Bytes=26923512)
    3 2 NESTED LOOPS (Cost=121 Card=1078 Bytes=8450442)
    4 3 NESTED LOOPS (Cost=4 Card=33 Bytes=129492)
    5 4 TABLE ACCESS (FULL) OF 'PEDESTAL_F' (Cost=1 Card=1 Bytes=16)
    6 4 TABLE ACCESS (BY INDEX ROWID) OF 'G_GEOMETRY_0' (Cost=3 Card=3268 Bytes=12771344)
    7 6 INDEX (RANGE SCAN) OF 'G_GEOMETRY_0_PRIMARY' (UNIQUE) (Cost=2 Card=3268)
    8 3 TABLE ACCESS (BY INDEX ROWID) OF 'G_GEOMETRY_0' (Cost=121 Card=3268 Bytes=12794220)
    9 8 DOMAIN INDEX OF 'G_GEOMETRY_0_SI' (Cost=51)
    10 2 TABLE ACCESS (BY INDEX ROWID) OF 'LOT_F' (Cost=1 Card=318 Bytes=4770)
    11 10 INDEX (RANGE SCAN) OF 'GI_LOT_F0_FEAT_NUM_0' (UNIQUE) (Cost=1 Card=318)
    12 1 NESTED LOOPS (Cost=876 Card=3428 Bytes=26923512)
    13 12 NESTED LOOPS (Cost=121 Card=1078 Bytes=8450442)
    14 13 NESTED LOOPS (Cost=4 Card=33 Bytes=129492)
    15 14 TABLE ACCESS (FULL) OF 'PEDESTAL_F' (Cost=1 Card=1 Bytes=16)
    16 14 TABLE ACCESS (BY INDEX ROWID) OF 'G_GEOMETRY_0' (Cost=3 Card=3268 Bytes=12771344)
    17 16 INDEX (RANGE SCAN) OF 'G_GEOMETRY_0_PRIMARY' (UNIQUE) (Cost=2 Card=3268)
    18 13 TABLE ACCESS (BY INDEX ROWID) OF 'G_GEOMETRY_0' (Cost=121 Card=3268 Bytes=12794220)
    19 18 DOMAIN INDEX OF 'G_GEOMETRY_0_SI' (Cost=51)
    20 12 TABLE ACCESS (BY INDEX ROWID) OF 'LOT_F' (Cost=1 Card=318 Bytes=4770)
    21 20 INDEX (RANGE SCAN) OF 'GI_LOT_F0_FEAT_NUM_0' (UNIQUE) (Cost=1 Card=318)
    But when I executed the query, I got:
    cc_redes_met_coaxial@ORAG2> /
    ROUND(MDSYS.SDO_GEOM.SDO_DISTANCE(lot_geom.geometry, ped_geom.geometry, 0.5),2) dist
    ERROR at line 2:
    ORA-03113: end-of-file on communication channel
    Collecting stats on geometry tables makes the query work only because it doesn't use the spatial index.
    I took a look the trace file, but I didn't see any interesting information. I can send you if you want.
    Do you have any clue?
    Regards,
    Alex

  • When I Share my project using QuickTime the top of my video is chopped off, how do i fix this?

    when I Share my project using QuickTime the top of my video is chopped off, how do i fix this?

    What version of Premiere Elements and on what computer operating system is it running?
    - Mac OSX; Premier Elements 11 v11
    Where is the audio in the project - numbered audio tracks, Narration Track, and/or Soundtrack? Any chance that you are using a XviD.avi file?
    - audio is either in the soundtrack , or in audio 2 when part of a video
    Besides the full properties of your source file including file extension, what are the full export settings that you are using presumably for Publish+Share/Computer/MPEG?
    - i was just using the default for MPEG, which is the NTSC DVD standard, file type MPEG2-DVD
    What player are you using? Does the file playback video and audio using the VLC player? Does the problem exist in a new project?
    - i have tried in quicktime and VLC, both have the same effect (picture works, staccato background noise).  I have not tried in another file, but will do so now.

  • This error is often caused by incorrect use of the "Strict" document type

    Okay...so I have 6 errors - all the same and has to do with my document type.
    I've searched the code and I am using a transitional doc type so why the errors?
    http://02cada7.netsolhost.com/Stasik_Family_Website/index.html

    Yeah I did that...but the cause doesn't make sense to me.
    You have used the attribute named above in your document, but the document type you are using does not support that attribute for this element. This error is often caused by incorrect use of the "Strict" document type with a document that uses frames (e.g. you must use the "Transitional" document type to get the "target" attribute), or by using vendor proprietary extensions such as "marginheight" (this is usually fixed by using CSS to achieve the desired effect instead).
    This error may also result if the element itself is not supported in the document type you are using, as an undefined element will have no supported attributes; in this case, see the element-undefined error message for further information.
    How to fix: check the spelling and case of the element and attribute, (Remember XHTML is all lower-case) and/or check that they are both allowed in the chosen document type, and/or use CSS instead of this attribute. If you received this error when using the <embed> element to incorporate flash media in a Web page, see the FAQ item on valid flash.
    I'm not using a strict document time - I am using transitional and I am not using proprietary extensions.

  • HELP!! SDO_RELATE inside Oracle procedure - ORA-13207: incorrect use of the

    Hello,
    I need help !
    I have a problem with queries inside procedures/packages.
    When execute sql
    SQL> SELECT LOC_OBJ_ID
    2 FROM VORO_LOC X, LBS_OZ_AREAS OZ
    3 WHERE MDSYS.SDO_RELATE(X.SHAPE, OZ.GEOLOC, 'MASK=ANYINTERACT') = 'TRUE'
    4 AND OZ.OZ_NAME='PTK' AND OZ.OZ_GROUP='GORCZEWSKA';
    LOC_OBJ_ID
    2211379
    i have results - it's OK
    The next sql is same, but with agregation
    SQL> SELECT COUNT(*) ILOSC
    2 FROM VORO_LOC X, LBS_OZ_AREAS OZ
    3 WHERE MDSYS.SDO_RELATE(X.SHAPE, OZ.GEOLOC, 'MASK=ANYINTERACT') = 'TRUE'
    4 AND OZ.OZ_NAME='PTK' AND OZ.OZ_GROUP='GORCZEWSKA';
    ILOSC
    1
    it's OK
    But when i want use this SQL inside proedurees in store result in variable i have problem
    SQL> declare
    2 V_NUMBER_NEI_LOC number;
    3 begin
    4 SELECT COUNT(*) ILOSC
    5 INTO V_NUMBER_NEI_LOC
    6 FROM VORO_LOC X, LBS_OZ_AREAS OZ
    7 WHERE MDSYS.SDO_RELATE(X.SHAPE, OZ.GEOLOC, 'MASK=ANYINTERACT') = 'TRUE'
    8 AND OZ.OZ_NAME='PTK' AND OZ.OZ_GROUP='GORCZEWSKA';
    9 end;
    10 /
    declare
    ORA-13207: incorrect use of the [SDO_RELATE] operator
    ORA-06512: at "MDSYS.SDO_INDEX_METHOD_9I", line 259
    ORA-06512: at line 4
    ORA-06512: at line 4
    Please help!

    This might be some issue with SQL in PL/SQL. We will check into this.
    In the meantime, can you try the dynamic SQL to execute that
    sdo_relate query to see if it works?
    Here is the example with dynamic SQL:
    declare
    V_NUMBER_NEI_LOC number;
    begin
    EXECUTE IMMEDIATE
    ' SELECT COUNT(*) ILOSC ' ||
    ' FROM VORO_LOC X, LBS_OZ_AREAS OZ ' ||
    ' WHERE MDSYS.SDO_RELATE(X.SHAPE, OZ.GEOLOC, ' ||
    ' ''MASK=ANYINTERACT'') = ''TRUE'' ' ||
    ' AND OZ.OZ_NAME=''PTK'' AND OZ.OZ_GROUP=''GORCZEWSKA'' '
    INTO V_NUMBER_NEI_LOC;
    end;
    /

  • Using a String in the "IN" clause

    Hello folks,
        I am trying to output results from a table based on a String which I was planning on using in the "IN" clause. When I run the query through the PL/SQL procedure, I get no results.
    In the PL/SQL program, I have a variable p_string where I am appending the ID's in a loop. So, when I print the string, I am seeing '1001','1002','1003' but when I do the following I get nothing.
    select * from test_tb
    where ID IN (p_string);
    Is this because there is an extra quote at the beginning and end of the string and the string is actually ''1001','1002','1003''?
    create table test_tb(ID varchar2(4), description varchar2(20));
    INSERT INTO TEST_TB (ID, DESCRIPTION) VALUES ('1001', 'Testing 1001');
    INSERT INTO TEST_TB (ID, DESCRIPTION) VALUES ('1002', 'Testing 1002');
    INSERT INTO TEST_TB (ID, DESCRIPTION) VALUES ('1003', 'Testing 1003');
    INSERT INTO TEST_TB (ID, DESCRIPTION) VALUES ('1004', 'Testing 1004');
    INSERT INTO TEST_TB (ID, DESCRIPTION) VALUES ('1005', 'Testing 1005');
    Thanks

    Thanks for the link, Greg.
    I was able to find another link which worked for me as I am not too familiar with Collections. I used Regular Expressions instead.
    https://blogs.oracle.com/aramamoo/entry/how_to_split_comma_separated_string_and_pass_to_in_clause_of_select_statement

  • Function-based index with OR in the wher-clause

    We have some problems with functin-based indexes and
    the or-condition in a where-clause.
    --We use Oracle 8i (8.1.7)
    create table TPERSON(ID number(10),NAME varchar2(20),...);
    create index I_NORMAL_TPERSON_NAME on TPERSON(NAME);
    create index I_FUNCTION_TPERSON_NAME on TPERSON(UPPER(NAME));
    The following two statements run very fast on a large table
    and the execution-plan asure the usage of the indexes
    (-while the session is appropriate configured and the table is analyzed):
    1)     select count(ID) FROM TPERSON where upper(NAME) like 'MIL%';
    2)     select count(ID) from TPERSON where NAME like 'Mil%' or (3=5);
    In particular we see that a normal index is used while the where-clause contains
    an OR-CONDITION.
    But if we try the similarly select-statement
    3)     select count(ID) FROM TPERSON where upper(NAME) like 'MIL%' or (3=5);
    the CBO will not use the function-index I_FUNCTION_TPERSON_NAME and we have a full table scan in the execution-plan.
    (This behavior we only expect with views but not with indexes.)
    We ask for an advice like a hint, which enable the CBO-usage
    of function-based indexes in connection with OR.
    This problem seems to be artificial because it contains this dummy logic:
         or (3=5).
    This steams from an prepared statement, where this kind of boolean
    flag reduce the amount of different select-statements needed for
    covering the hole business-logic, while using bind-variables for the
    concrete query-parameters.
    A more realistic (still boild down) version of our select-statement is:
    select * FROM TPERSON
    where (upper(NAME) like 'MIL%' or (NAME is null))
    and (upper(FIRSTNAME) like 'MICH% or (FIRSTNAME is null))
    and ...;
    thank you for time..
    email: [email protected]

    In the realistic statement you write :
    select * FROM TPERSON
    where (upper(NAME) like 'MIL%' or (NAME is null))
    and (upper(FIRSTNAME) like 'MICH% or (FIRSTNAME is null))
    and ...;
    as far as i know, NULL values are not indexed, "or (NAME is NULL)" have to generate a full table scan.
    HTH
    We have some problems with functin-based indexes and
    the or-condition in a where-clause.
    --We use Oracle 8i (8.1.7)
    create table TPERSON(ID number(10),NAME varchar2(20),...);
    create index I_NORMAL_TPERSON_NAME on TPERSON(NAME);
    create index I_FUNCTION_TPERSON_NAME on TPERSON(UPPER(NAME));
    The following two statements run very fast on a large table
    and the execution-plan asure the usage of the indexes
    (-while the session is appropriate configured and the table is analyzed):
    1)     select count(ID) FROM TPERSON where upper(NAME) like 'MIL%';
    2)     select count(ID) from TPERSON where NAME like 'Mil%' or (3=5);
    In particular we see that a normal index is used while the where-clause contains
    an OR-CONDITION.
    But if we try the similarly select-statement
    3)     select count(ID) FROM TPERSON where upper(NAME) like 'MIL%' or (3=5);
    the CBO will not use the function-index I_FUNCTION_TPERSON_NAME and we have a full table scan in the execution-plan.
    (This behavior we only expect with views but not with indexes.)
    We ask for an advice like a hint, which enable the CBO-usage
    of function-based indexes in connection with OR.
    This problem seems to be artificial because it contains this dummy logic:
         or (3=5).
    This steams from an prepared statement, where this kind of boolean
    flag reduce the amount of different select-statements needed for
    covering the hole business-logic, while using bind-variables for the
    concrete query-parameters.
    A more realistic (still boild down) version of our select-statement is:
    select * FROM TPERSON
    where (upper(NAME) like 'MIL%' or (NAME is null))
    and (upper(FIRSTNAME) like 'MICH% or (FIRSTNAME is null))
    and ...;
    thank you for time..
    email: [email protected]

  • Selecting using a field that stores a column_name to be used in the where

    I have a table REPORTING_CRITERIA with fields and field values:
    gl_criteria1 = 'cc.segment5'
    from_value1= '1123'
    to_value1= '1130'
    gl_criteria2 = 'cc.segment5'
    from_value2 = '1140'
    to_value2 = '1150'
    I am trying to run a select where I pull records where the actual field name stored in gl_criteria1 and gl_criteria2 is used in the where clause.
    ie.
    select bal.gl_balance, account_code
    from gl_balances bal, accounts cc, reporting_criteria crit
    where crit.report_name ='BUDGET'
    and crit.gl_criteria1 between crit.from_value1 and crit.to_value1
    What I want is to have the where read like:
    where crit.report_name ='BUDGET'
    and cc.segment5 between crit.from_value1 and crit.to_value1
    Thus cc.segment5 is the value stored in the reporting_criteria table in the gl_criteria1 field but it is an actual db column to be used in my select.
    How can I get this query to work so that the contents of gl_criteria1 field are actually read like a column name in my where?
    Edited by: ajgolden87 on Nov 8, 2012 11:10 AM

    Hi,
    You should know the column names of the table you are quering. If so you can make queries like this:
    with CC as
    select 1 id, 1123 segment5 from dual union all
    select 2 id, 1124 segment5 from dual union all
    select 3 id, 1125 segment5 from dual union all
    select 4 id, 1126 segment5 from dual union all
    select 5 id, 1127 segment5 from dual union all
    select 6 id, 1128 segment5 from dual union all
    select 7 id, 1129 segment5 from dual union all
    select 8 id, 1130 segment5 from dual union all
    select 9 id, 1131 segment5 from dual union all
    select 10 id, 1132 segment5 from dual
    ,REPORTING_CRITERIA  AS
    SELECT
      'SEGMENT5'        GL_CRITERRIA_1
      ,'1123'           FROM_VALUE_1
      ,'1130'           TO_VALUE_1
      ,'ID'             GL_CRITERRIA_2
      ,'4'              FROM_VALUE_2
      ,'7'              TO_VALUE_2
    FROM
      DUAL
    SELECT
      cc.*
    FROM
      CC
      ,REPORTING_CRITERIA
    WHERE
      GL_CRITERRIA_1 IS NULL
      OR CASE WHEN GL_CRITERRIA_1 = 'SEGMENT5' THEN SEGMENT5
              WHEN GL_CRITERRIA_1 = 'ID' THEN ID
              ELSE NULL END BETWEEN FROM_VALUE_1 AND TO_VALUE_1
      ) AND
      GL_CRITERRIA_2 IS NULL
      OR CASE WHEN GL_CRITERRIA_2 = 'SEGMENT5' THEN SEGMENT5
              WHEN GL_CRITERRIA_2 = 'ID' THEN ID
              ELSE NULL END BETWEEN FROM_VALUE_2 AND TO_VALUE_2
    ID SEGMENT5
    4     1126
    5     1127
    6     1128
    7     1129 Regards,
    Peter

  • Is it possible to create a view where table in the From clause changes name

    is it possible to create a view from a from a table like this
    create view my_view as select id, col1, col2, result from <<my_latest_cacahe_table>>;
    the table in the from clause changes the name .
    I have another table which indicates the the latest name of my cache tables. Always there are two records there. The latest one and previous one.
    select * from cache_table_def
    table_name cache_table_name refresh_date
    my_table cache_table245 1/23/2012
    my_table cache_table235 1/22/2012
    create table cache_table_def (table_name varchar2(25), cache_table_name varchar2(25), refresh_date date);
    insert into cache_table_def values( 'my_table','cache_table245','23-jan-2012');
    insert into cache_table_def values ( 'my_table','cache_table546','22-jan-2012');
    create table cache_table245 (id number, col1 varchar2(50), col2 varchar2(20), result number);
    insert into cache_table245 values(1, 'test123', 'test345',12.12);
    insert into cache_table245 values (2, 'test223', 'test245',112.12);
    create table cache_table235 (id number, col1 varchar2(50), col2 varchar2(20), result number);
    insert into cache_table235 values (1, 'test123', 'test345',92.12);
    insert into cache_table235 values (2, 'test223', 'test245',222.12);
    what I need to do is find the latest cache_table name for my_table and use that in my view defintion
    When user select from the the view it always reurns the data from the latest cache_table
    is it possible to do something like this in oracle 11g?
    I have no control on the cache tables names. that is why I need to use the latest name from the table.
    Any ideas really appreciated.

    I've worked up an example that does what you ask. It uses the SCOTT schema EMP table. Make two copies of the EMP table, EMP1 and EMP2. I deleted dept 20 from emp1 and deleted dept 30 from emp2 so I could see that the result set really came from a different table.
    -- create a context to hold an environment variable - this will be the table name we want the view to query from
    create or replace context VIEW_CTX using SET_VIEW_FLAG;
    -- create the procedure specified for the context
    - we will pass in the name of the table to query from
    create or replace procedure SET_VIEW_FLAG ( p_table_name in varchar2 default 'EMP')
      as
      begin
          dbms_session.set_context( 'VIEW_CTX', 'TABLE_NAME', upper(p_table_name));
      end;
    -- these are the three queries - one for each table - none of them will return data until you set the context variable.
    select * from emp where 'EMP' = sys_context( 'VIEW_CTX', 'TABLE_NAME' );
    select * from emp1 where 'EMP1' = sys_context( 'VIEW_CTX', 'TABLE_NAME' );
    select * from emp2 where 'EMP2' =  sys_context( 'VIEW_CTX', 'TABLE_NAME' )
    -- this is how you set the context variable depending on the table you want the view to query
    exec set_view_flag( p_table_name => 'EMP' );
    exec set_view_flag( p_table_name => 'EMP1' );
    exec set_view_flag( p_table_name => 'EMP2');
    -- this will show you the current value of the context variable
    SELECT sys_context( 'VIEW_CTX', 'TABLE_NAME' ) FROM DUAL
    -- this is the view definition - it does a UNION ALL of the three queries but only one will actually return data
    CREATE VIEW THREE_TABLE_EMP_VIEW AS
    select * from emp where 'EMP' = sys_context( 'VIEW_CTX', 'TABLE_NAME' )
    union all
    select * from emp1 where 'EMP1' = sys_context( 'VIEW_CTX', 'TABLE_NAME' )
    union all
    select * from emp2 where 'EMP2' =  sys_context( 'VIEW_CTX', 'TABLE_NAME' )
    -- first time - no data since context variable hasn't been set yet
    SELECT * FROM THREE_TABLE_EMP_VIEW
    -- get data from the EMP table
    exec set_view_flag( p_table_name => 'EMP' );
    SELECT * FROM THREE_TABLE_EMP_VIEW
    -- get data from the EMP2 table
    exec set_view_flag( p_table_name => 'EMP2');
    SELECT * FROM THREE_TABLE_EMP_VIEW
    For your use case you just have to call the context procedure whenever you want to switch tables. You can union all as many queries as you want and can even put WHERE clause conditions based on other filtering criteria if you want. I have used this approach with report views so that one view can be used to roll up report data different ways or for different regions, report periods (weekly, quarterly, etc). I usually use this in a stored procedure that returns a REF CURSOR to the client. The client requests a weekly report and provides a date, the procedure calculates the START/END date based on the one date provided and sets context variables that the view uses in the WHERE clause for filtering.
    For reporting it works great!                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • How to remove the OR clause in this query?

    Hello Everyone,
    I have this query where i have a lot of joins and in the where clause there is a ISNULL and conditions based on OR clause.
    How to remove the use of the OR clause which may cause performance problems? Can anyone suggest a method to remove the OR clause?
    select RS.PLANNEDSTART,
    OD.ESTSHIPDATE
    FROM TABLE1 RS(NOLOCK)
         INNER JOIN TABLE2 SS(NOLOCK)
         ON RS.ID1             = SS.ID1
         INNER JOIN TABLE3 AM(NOLOCK)
         ON AM.KEYID        = SS.KEYID
         INNER JOIN TABLE4 OD(NOLOCK)
         ON SS.KEYID= OD.KEYID
        INNER JOIN TABLE 8 DR
       ON
    WHERE              (isnull(RS.DATE1,'1970-01-01 00:00:00.000') ='1970-01-01 00:00:00.000'
                     AND OD.DATE1 between @Beginning_Route_Date and @Ending_Route_Date)
                 OR
                 RS.DATE1!='1970-01-01 00:00:00.000'
                   AND RS.DATE1 BETWEEN  @Beginning_Route_Date and @Ending_Route_Date)              
    Regards
    Gautam S
    Gautam S

    this is one way avoiding OR clause
    WHERE CASE WHEN isnull(RS.DATE1,'1970-01-01 00:00:00.000') ='1970-01-01 00:00:00.000'
    THEN OD.DATE1 ELSE RS.DATE1 END between @Beginning_Route_Date and @Ending_Route_Date)
    Please Mark This As Answer if it helps to solve the issue Visakh ---------------------------- http://visakhm.blogspot.com/ https://www.facebook.com/VmBlogs

  • Function-based Index and an OR-condition in the WHERE-clause

    We have some problems with functin-based indexes and
    the or-condition in a where-clause.
    (We use oracle 8i (8.1.7))
    create table TPERSON(ID number(10),NAME varchar2(20),...);
    create index I_NORMAL_TPERSON_NAME on TPERSON(NAME);
    create index I_FUNCTION_TPERSON_NAME on TPERSON(UPPER(NAME));
    The following two statements run very fast on a large table
    and the execution-plan asure the usage of the indexes
    (-while the session is appropriate configured and the table is analyzed):
    1)     select count(ID) FROM TPERSON where upper(NAME) like 'MIL%';
    2)     select count(ID) from TPERSON where NAME like 'Mil%' or (3=5);
    In particular we see that a normal index is used while the where-clause contains
    an OR-CONDITION.
    But if we try the similarly select-statement
    3)     select count(ID) FROM TPERSON where upper(NAME) like 'MIL%' or (3=5);
    the CBO will not use the function-index.
    (This behavior we only expect with views but not with indexes.)
    We ask for an advice like an hint, which enable the CBO-usage
    of function-based indexes in connection with OR.
    This problem seems to be artificial because it contains this dummy logic:
         or (3=5).
    This steams from an prepared statement, where this kind of boolean
    flag reduce the amount of different select-statements needed for
    covering the hole business-logic, while using bind-variables for the
    concrete query-parameters.
    A more realistic (still boild down) version of our prepared select-statement run in
    SQL Plus:
    define x_name = 'MIL%';
    define x_firstname = '';
    select * FROM TPERSON
    where (upper(NAME) like '&x_name' or ( '&x_name' = ''))
    and (upper(FIRSTNAME) like '&x_firstname' or ('&x_firstname' = ''))
    and ...;
    In particular we dont refernce the tablecolumn , but the QUERY-Parameter
    yield the second boolean value in the or-condition.
    The problem is that this condition ('&x_name' = '') dont use any index.
    thanks a lot for spending your time with this problem

    Try
    SELECT /*+ RULE */
    as your hint. I don't have the book with me, but this last weekend I read a section about your very problem. The book was a Oracle Press gold cover about Oracle 8i Performance tuning. If you e-mail me I can quote you the chapter when I get home Friday.

  • Icons in the top Toolbar

    I know that this probably sounds quite petty, but how do you remove unwanted icons that you don't use from the top toolbar? Oviously I am happy with the battery icon, wireless strength etc, but I have one for scripts, one for VPN and one for a sailing clicker etc that I never use.
    Any ideas please?!
    Thanks
    ibookG4   Mac OS X (10.4.8)  

    Hold down the command key and drag the Item from the MenuBar out.

  • How to use the Output clause for the updated statment

    How to use the output clause for the below update stament,
    DECLARE @MyTableVar table(
        sname int NOT NULL)
    update A set stat ='USED' 
    from (select top 1 * from #A 
    where stat='AVAILABLE' order by sno)A
    Output inserted.sname
    INTO @MyTableVar;
    SELECT sname
    FROM @MyTableVar;
    Here am getting one error incorrect syntax near Output
    i want to return the updated value from output clause

    see
    http://blogs.msdn.com/b/sqltips/archive/2005/06/13/output-clause.aspx
    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    Visakh
    My Wiki User Page
    My MSDN Page
    My Personal Blog
    My Facebook Page

  • In printing only a specific selected section, the top line or 2 of the printout is not printing. This only happened since the last update. It does not happen when I use internet explorer.

    I read many financial documents during the day. I sometimes print only a selected segment of an article or a financial statement. When I print selected only, the top line or 2 lines is omitted from the print document. It does not happen in explorer.
    I used Firefox for years, and this just started in the last 3 weeks or so. I can get around it by just selecting 2 lines above what I want to print. But, it is annoying.

    * [[Printing a web page]]
    * [[Firefox prints incorrectly]]
    Check and tell if its working.

  • Whenever I open the editor in Photoshop Elements 12 it does not work. When I try to click open in the application it does not do anything. None of the buttons work. When I open a photo using file at the top it opens but I cannot edit it or use any of the

    Whenever I open the editor in Photoshop Elements 12 it does not work. When I try to click open in the application it does not do anything. None of the buttons work. When I open a photo using file at the top it opens but I cannot edit it or use any of the features on the left side.

    Hi Nealeh
    Thanks i think I got it working of a fashion.
    Except the replace colour, does not seem to end up with the colour I picked using the picker tool. Its as though it hads not replaced the colour but blended in the desired colour with the old incorrect colour!
    Buy trial and error picking not the right colour but close - which when mixed with the existing colour is close.
    Sorry I can't post the pictures as the Lingerie Mfg, has me under non disclosure.
    The scenario is:-  say a blonded mainly tanned model a high cut [at the hips] corsette style basque, with an ultra low bra line.
    Our dear model, has just come back from St Barts with a fabulous Tan, and equally striking bold Tan lines!.
    So we have great tanned legs, then the 'porcelain white band' where her swimsuit was.
    Likewise we have a tanned face, and arms, shoulders etc and a great tan on the top of the cleavage, then it stops, white band to the top of the ultralow cut bra line of the basque.
    She must have lived in like the most conservative bikini on the planet [50's style], for 2 weeks!
    Had she had a normal skimpy bikini on, no problem!
    If i don't solve it, she will get fired!
    Not a lack of interest in your post, but I was out, and tried to log in to this site; which I could do, on my iPad Air / 5 [whatever its the new one]. And tried to 'sign in' - but it just hung at the
    "Join Adobe Community" adobe sign in splash screen! with he little whell spinning around continuously!!!
    I have Safari on this iPad. Guess that is all it runs.
    So technology is not my friend today!

Maybe you are looking for

  • Delivery Complete Indicator in PO

    Dear Experts , I have manually ticked the delivery complete indicator in the delivery Tab in the PO . I had ordered 100 qty . Did the gr for 50 & now i dont expect any delivery. But when i try to do a GR  against the PO ,the system still allows to pr

  • Opening an attachment in Edit mode

    Hi All, I would like to be able to open Word attachments in Edit mode automatically (when the attachment is double-clicked), rather than right-click > Edit. Is this possible? Thanks!

  • New Key Figure Requrinment

    hellow gurus i'm workin on BW 3.5 now in a report i need a new info object which is equal to Warranty Quanity / Sales Qty.. But the requirnment is Warranty qty = Sum of all Warranty Quantities of last 12 month but Sales Qty = Sum of all Sales Quantit

  • External OS command script in file adapter - return value check possible?

    Is it possible to check return value of external OS script execution which is called in the file adapter? We want to see the result in the adapter monitoring. The documentation says: "Message processing is independent of any errors that occur during

  • Nokia Lumia 1520 Errors while trying to watch vide...

    I get an error code of 80040154 when I try to view a video off of facebook that is not a YouTube video. Is this normal??