Select MOD(rownum,2) gf from a WHERE gf=0

hi all
select MOD(rownum,2) gf from a
where gf=0;
this query dod't give me rows
SQL> select MOD(rownum,2) gf from a;
        GF
         1
         0
         1
         0
         1
         0
6 rows selected.Please correct me
Thanks And Regards
Vikas
Edited by: vikas singhal on May 28, 2011 5:02 PM
Edited by: vikas singhal on May 28, 2011 5:03 PM

Hi, Vikas,
When you define a column alias (such as gf), you can use that alias in the ORDER BY clause, but that's the only place where you can use it in the same query. If you assign the alias in a sub-query, then you can use it anywhere in a super-query, like this:
WITH     got_gf     AS
     select      MOD (rownum, 2)      AS gf
     from      a
SELECT     *
FROM     got_gf
where      gf     = 0;If the aliased expression is simple, and you don't need to reference it often, then you may find it easier just to repeat the expression, like this:
select      MOD (rownum, 2)      AS gf
from      a
where      MOD (rownum, 2)     = 0;Edited by: Frank Kulash on May 28, 2011 8:04 AM
Correction: repeating the expression in the WHERE clause doesn't always work when it involves ROWNUM, since ROWNUM depends on how many previous rows satisfied the WHERE clause. In this case, use a sub-query.

Similar Messages

  • What is wrong with select? rownum, unique

    SELECT o FROM ( SELECT UNIQUE(OWNER) AS o, ROWNUM AS the_row_num FROM all_tables) WHERE the_row_num BETWEEN 1 and 3;
    I wanted to have unique values from owner column from 1 to 3 (there are more unique values there).

    The UNIQUE applies to the entire column list - not just owner.
    One way:
    select o
      from (select unique owner as o
              from all_tables
             order by owner)
    where rownum <= 3;If you want to get rows x to y based on some order instead of just the first three, then:
    http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:127412348064

  • Select *, rowid into var1, var2 from...

    Hello,
    as mentioned in the subject, I want to do the following in plsql:
    var1 table%rowtype;
    var2 rowid;
    select *, rowid into var1, var2 from table where ...;
    So this is not possible yet, what else can I do instead as I ...
    1. don't want to split one select statement into two.
    2. don't know the columns of the table at compile time.
    3. would like to use the rowtype, if possible.
    Any ideas?
    Thanx a lot
    Matthias

    If you do not know the columns at compile-time then how is your update-statement working? Is that getting generated dynamically too? And are your updating all the columns in the table?
    PS: Btw, you can declare a cursor and have a %rowtype variable based on that. Like this:
    declare
        cursor c1
        is
        select t.*,
               t.rowid
        from   table1  t
        r_cursor     c1%rowtype;
    begin
        for r_cursor in c1
        loop
            dbms_output.put_line ( 'Col2: [' || r_cursor.col2 || ']' );
            update table1
            set    col2 = r_cursor.col2 + 10
            where  table1.rowid = r_cursor.rowid
        end loop;
    end;
    /

  • Select * from table where rownum 5; no rows returned? why is it so?

    select from table where rownum > 5;*
    no rows returned. why is it so?
    can anyone explain me?

    Hi,
    rownum is pseudo column, and it is based on the sort order.
    For ex, if you want to get the first 5 employees who get the least salary, you use,
    select ename,sal from
        (select ename, sal
         from emp
         order by sal )
        where rownum<=5
    ENAME      SAL                   
    SMITH      800                   
    ALLEN1     890                   
    JAMES      951                   
    TURNER     998                   
    ADAMS      1100Suppose, if you want to use highest salary, you change the order by and not the rownum. So, it becomes,
    select ename,sal from
        (select ename, sal
         from emp
         order by sal desc)
        where rownum<=5
    ENAME      SAL                   
    KING1      5000                  
    FORD       3000                  
    SCOTT      3000                  
    JONES      2975                  
    BLAKE      2850 So, its not the rownum you would want to change, but the order by.
    -Arun

  • Select * from emp where ename=(procedure1(procedure2(procedure3)));

    I have a big problem
    I have to check the data for quality data
    Lets say i have to check data in emp table
    First i have to check whether the empno is of type number
         IF empno=number then
              if ename starts with a particualar format then
                   ---printouts and this procedure goes on for about 10 coulumns
    I have designed a hard coded procedure where I input table name and column name and the procedure does the checks and give out result
    I have planned to call that procedures here for each checks
    its like i make the procedure to execute and the procedure returns rowid of the correct data
    now i have to apply the second procedure where input is all the rowids of previous procedure and it goes on
    I even dont know whether procedure is correct or function is correct
    Its like select * from emp where ename=(procedure1(procedure2(procedure3)));
    each procedure's output is Rowids only which satisfy a particular format of data
    Please explain me in details
    Please please help me.

    Nested calls are not the best of ideas. Ignoring that for a moment, there are a couple of ways to address this requirement in Oracle. One of these, and likely one of the more scalable ways, is to use Pipeline Table Functions.
    The following code demonstrates the basics of this approach, using pipelined table functions to perform validation checks on data.
    SQL> -- generic type to serve as input cursors to the validation functions
    SQL> create or replace type TFormatCheckRow as object
      2  (
      3          row_identifier  varchar2(30),
      4          value           varchar2(100)
      5  );
      6  /
    Type created.
    SQL>
    SQL> -- validation functions returns the rowid of rows that are valid
    SQL> create or replace type TRowID as object
      2  (
      3          row_identifier  varchar2(30)
      4  );
      5  /
    Type created.
    SQL>
    SQL> create or replace type TRowIDTable is table of TRowID;
      2  /
    Type created.
    SQL>
    SQL>
    SQL> create or replace package LIB is
      2
      3          type    TCursor is REF CURSOR;
      4  end;
      5  /
    Package created.
    SQL>
    SQL> -- sample validation function to check if the value is a valid NUMBER, and
    SQL> -- if so will return the rowid of that row for further processing
    SQL> create or replace function ValidateNumber( c LIB.TCursor ) return TRowIDTable
      2          pipelined is
      3
      4          MAX_FETCH_SIZE  constant number := 100;
      5          type    TBuffer is table of TFormatCheckRow;
      6
      7          buffer  TBuffer;
      8
      9          function IsNumber( val varchar2 ) return boolean is
    10                  n       number;
    11          begin
    12                  n := TO_NUMBER( val );
    13                  return( TRUE );
    14          exception when OTHERS then
    15                  return( FALSE );
    16          end;
    17
    18  begin
    19          loop
    20                  fetch c bulk collect into buffer limit MAX_FETCH_SIZE;
    21
    22                  for i in 1..buffer.Count
    23                  loop
    24                          if IsNumber( buffer(i).value ) then
    25                                  PIPE ROW( TRowID( buffer(i).row_identifier ) );
    26                          end if;
    27                  end loop;
    28
    29                  exit when c%NOTFOUND;
    30          end loop;
    31
    32          close c;
    33
    34          return;
    35  end;
    36  /
    Function created.
    SQL> show error
    No errors.
    SQL>
    SQL>
    SQL> -- a sample table to check
    SQL> create table foo_tab
      2  (
      3          some_value      varchar2(20)
      4  )
      5  /
    Table created.
    SQL>
    SQL>
    SQL> -- put some data into the table
    SQL> insert
      2  into       foo_tab
      3  select
      4          object_id
      5  from       all_objects
      6  where      rownum < 11
      7  /
    10 rows created.
    SQL>
    SQL> insert
      2  into       foo_tab
      3  select
      4          SUBSTR(object_name,1,20)
      5  from       all_objects
      6  where      rownum < 11
      7  /
    10 rows created.
    SQL>
    SQL> commit;
    Commit complete.
    SQL>
    SQL> -- return rowids of all rows from FOO_TAB where the column SOME_VALUE is a valid number
    SQL> select
      2          row_identifier
      3  from       TABLE(ValidateNumber( CURSOR(select TFormatCheckRow(f.rowid,f.some_value) from foo_tab f) ))
      4  /
    ROW_IDENTIFIER
    AAAOQKAAEAAAAFQAAA
    AAAOQKAAEAAAAFQAAB
    AAAOQKAAEAAAAFQAAC
    AAAOQKAAEAAAAFQAAD
    AAAOQKAAEAAAAFQAAE
    AAAOQKAAEAAAAFQAAF
    AAAOQKAAEAAAAFQAAG
    AAAOQKAAEAAAAFQAAH
    AAAOQKAAEAAAAFQAAI
    AAAOQKAAEAAAAFQAAJ
    10 rows selected.
    SQL>
    SQL>
    SQL> -- list the rows that contain valid numbers
    SQL> with ROWID_LIST as
      2  (
      3  select
      4          row_identifier
      5  from       TABLE(ValidateNumber( CURSOR(select TFormatCheckRow(f.rowid,f.some_value) from foo_tab f) ))
      6  )
      7  select
      8          *
      9  from       foo_tab f
    10  where      f.rowid in (select row_identifier from ROWID_LIST)
    11  order by 1
    12  /
    SOME_VALUE
    258
    259
    311
    313
    314
    316
    317
    319
    605
    886
    10 rows selected.
    SQL>

  • Create table bulk_load as select ename from emp where 1=2

    The Above Query will create a new table using the strucure of old but there will be no data..
    Kindly explain me what is meant by "where 1=2"?
    Is it referring the table or column or for just testing the query??

    Is not a rule that you always must use 1=2... look this example:
    sql >> create table t as
    2 select * from all_objects;
    Table created.
    sql >> select count(*) from t;
    COUNT(*)
    43975
    sql >> create table ttt as
    2 select * from t where rownum=0;
    Table created.
    sql >> create table tt as
    2 select * from t where 9=4;
    Table created.

  • Select name into :Name_supp from py_emp where id=:id_supp; in (Tablour) ?

    Hi i want to use this query in Tablour Style form
    Select name into :Name_supp from py_emp where id=:id_supp;
    Exception when no_data_found then null;
    Now i need that its will generate all name when id=:id_supp
    When i used this Trigger in button its not update all text box its update only current text box
    Regards
    Shahzaib ismail

    Shahzaib ismail,
    When i used this Trigger in button its not update all text box its update only current text box
    From this i think that its a multi record block, and after fetching it, you changed the id_supp in the master block. So in order to that change, you want to set the name of that supplier in the detail block.
    For this you can,
    1) Create a function that returns the name using the select statement you wrote, and call that function in the Formula property. Also change the Calculation Mode to Formula.
    2) Assign the name in to a text item in master block, which is hidden, and assign that item's name in the Synchronize with Item property of the detail item.
    3) Loop through the detail block, and assign the name value.
    Regards,
    Manu.
    If this answer is helpful or correct, please mark it. Thanks.

  • Get Selections From ALV on Multiple Selection Mode

    Hi,
    How can i get values of selected rows from ALV that has selection '0..n' (multiple selection) ?
    Can somebody help me pls?
    Thanks.

    Hi Nurullah,
    Steps to make multiple rows selectable in ALV:
    1) Create the selection property of the node that you are binding to the DATA node as o..n
    2) Un-check the, "Initialization Lead Selection" checkbox for the node which you are using to bind to the DATA node
    3) In the WDDOINIT method specify the ALV's selection mode as MULTI_NO_LEAD. It is important that you set the selection mode to MULTI_NO_LEAD or else in the end you would be capturing 1 row lesser than the total number of rows the user has selected. This is because 1 of the rows would have the LeadSelection property & our logic wouldnt be reading the data for that row. Check the example code fragment as shown below:
    DATA lo_value TYPE REF TO cl_salv_wd_config_table.
      lo_value = lo_interfacecontroller->get_model( ).
      CALL METHOD lo_value->if_salv_wd_table_settings~set_selection_mode
        EXPORTING
          value = cl_wd_table=>e_selection_mode-MULTI_NO_LEAD.
    Steps to get the multiple rows selected by the user
    In order to get the multiple rows which were selected by the user you will just have to call the get_selected_elements method of if_wd_context_node. So as you can see its no different from how you would get the multiple rows selected by the user in a table ui element. First get the reference of the node which you have used to bind to the ALV & then call this method on it. Check the example code fragment below:
    METHOD get_selected_rows .
      DATA: temp TYPE string.
      DATA: lr_node TYPE REF TO if_wd_context_node,
                wa_temp  TYPE REF TO if_wd_context_element,
                ls_node1 TYPE wd_this->element_node_flighttab,
                lt_node1 TYPE wd_this->elements_node_flighttab.
      lr_node = wd_context->get_child_node( name = 'NODE_FLIGHTTAB' ).
    " This would now contain the references of all the selected rows
      lt_temp = lr_node->get_selected_elements( ).
        LOOP AT lt_temp INTO wa_temp.
    " Use the references to get the exact row data
          CALL METHOD wa_temp->get_static_attributes
            IMPORTING
              static_attributes = ls_node1.
          APPEND ls_node1 TO lt_node1.
          CLEAR ls_node1.
        ENDLOOP.
    ENDMETHOD.
    Hope this helps resolve your problem.
    Regards,
    Uday

  • How can use the select statement  to retriev the data from  a where conditi

    Hi,
    SELECT KUNNR
               NAME1
               STRAS
               ORT01
               PSTLZ
               LAND1
         FROM  KNA1
         INTO TABLE IT_KNA1
         FOR ALL ENTRIES IN IT_LIKP
         WHERE KUNNR = IT_LIKP-KUNNR AND
               KUNNR = IT_LIKP-KUNAG.
    Here I am getting records only when WHERE KUNNR = IT_LIKP-KUNNR AND
                                            KUNNR = IT_LIKP-KUNAG.
    But I need the records for both when KUNNR = IT_LIKP-KUNNR
                                 And     KUNNR = IT_LIKP-KUNAG.
    Can you suggest me the best logic.
    Thanks.
    Kumar .

    Hi Suresh,
    Use the following code.
    Loop at it_likp.
    if it_likp-kunnr <> ' '.
    select name1 stras ort01 pstlz land1 into corresponing field of table it_kna1
             from kna1
             where kunnr = IT_LIKP-KUNNR.
    elseif it_likp-kunag <> ' '.
    select name1 stras ort01 pstlz land1 into corresponing field of table it_kna1
             from kna1
             where kunnr = IT_LIKP-KUNAG.
    elseif it_likp-kunnr <> ' ' and it_likp-kunag <> ' '.
    select name1 stras ort01 pstlz land1 into corresponing field of table it_kna1
             from kna1
             where kunnr = IT_LIKP-KUNNR
             AND   KUNAR = IT_LIKP-KUNAG.
    endif.
    endloop.
    hOPE THIS WILL WORK FINE.
    Rewards pts if it is usefull.
    Regards
    Srimanta

  • How do I do SELECT * FROM TABLE WHERE KEY IN ({list})?

    The title says it all really.
    Is there a reasonable performant way to perform the query
    SELECT * FROM TABLE WHERE KEY IN ({list})where {list} is String []?
    I am currently creating a PreparedStatement with a for loop like this   StringBuffer sb = new StringBuffer ("SELECT * FROM TABLE WHERE ID IN (");
      for (int ii=0;ii<keys.length;ii++) {
        sb.append (keys [ii]);
        if (ii != keys.length-1) sb.append (",");
      sb.append (")");but this means that the prepared statement is created each time I call my method and so I'm not sure that the optimizer will find it easy to cope with. Is there a construction that I'm missing along the lines of SELECT * FROM TABLE WHERE KEY = ? where I can create the PreparedStatement once and just call setObject or something on it when the values in {list} change?

    but this means that the prepared statement is created
    each time I call my method and so I'm not sure that
    the optimizer will find it easy to cope with.You are right, the optimizer won't find that easy to deal with (presuming that is even relevant for your driver/database.) But most optimizers won't do anything with statements that change and that is what you are doing.
    You could create several prepared statements which have a common number of bind variables. For example 10 statements with from 1 to 10 bind values. This will work if most of the queries use those.

  • Is it possible to ... SELECT * FROM my_table WHERE ssn IN (..arraylist..) ?

    Hi, I have a quick question I hope someone can help me with. I'm a student and what I'm looking for should be easy but I can't find any information on it.
    Here's my code, it's probably self-explanatory but to clarify I'm trying to get a list of "Captains" in the order of who has the most wins.
    The problem is that the database tables have thousands of "Captains" and I'm only supposed to look at 200 specific "Captains" which have their ssn in a specific arraylist and then return the top 80 "Captains" from that selection.
    Something like this...
    SELECT first 80 E.name, L.ssn, COUNT(L.wins) as Wins
    FROM log L, employees E
    where type matches "[Captain]"
    and E.ssn = L.ssn
    and L.ssn IN (...arraylist...) // How do I loop through the arraylist but still return a list of the top 80 winners?
    group by E.name, L.ssn
    order by Wins desc;
    Should I start by taking the list of social security numbers from the arraylist and insert them into a temporary table and then use that temporary table to base my selection on?
    For example:
    int rows = 0;
    PreparedStatement ps = conn.prepareStatement("INSERT INTO TEMP captainsTemp (ssn) VALUES(?)");
    Iterator i = myArrayList.iterator();
    while (i.hasNext())
         // Set the variables
         for (int pos = 1; pos <= 63; pos++)
              String s = (String)i.next();
              ps.setString(pos,s);
         // insert a row
         rows += ps.execute();
    ...and then below that I could use
    "SELECT * FROM captains
    WHERE ssn IN (SELECT * FROM captainTemp)..."
    This looks like an ugly solution and I'm not sure if it works, sessionwise..
    Everything's written in Java and SQL.
    If you have any thoughts on this I would be most grateful.
    I should add that this is NOT a school assignment but something I'm trying to figure out for my work...
    Many thanks,
    sincerely,
    JT.

    hi,
    Ignore my previous response. Try out this one. It should help you.
    Lets take the example of EMP table (in Oracle's SCOTT Schema). The following is the description of the table.
    SQL> desc emp
    Name Null? Type
    EMPNO NOT NULL NUMBER(4)
    ENAME VARCHAR2(10)
    JOB VARCHAR2(9)
    MGR NUMBER(4)
    HIREDATE DATE
    SAL NUMBER(7,2)
    COMM NUMBER(7,2)
    DEPTNO NUMBER(2)
    SQL> select ename from emp;
    ENAME
    SMITH
    ALLEN
    WARD
    JONES
    MARTIN
    BLAKE
    CLARK
    SCOTT
    KING
    TURNER
    ADAMS
    JAMES
    FORD
    MILLER
    Say, the ArrayList contains 3 names CLARK,KING & MILLER. You want to loop through the ArrayList for the ENAME values.
    First construct a string like below from the ArrayList.
    "ename in 'CLARK' OR ename in 'KING' or ename in 'MILLER'";
    Append this string to the normal SELECT Query
    Query :
    select ename from emp where ename in 'CLARK' OR ename in 'KING' or ename in 'MILLER'
    Here you get the desired output & thats pretty fast because you just do it once !!!
    SQL> select ename from emp where ename in 'CLARK' OR ename in 'KING' or ename in 'MILLER';
    ENAME
    CLARK
    KING
    MILLER
    you can extend this to your Query also.
    thanks,
    Sriram

  • SA 520 error every 10 seconds: sqlite3QueryResGet failed.Query:SELECT * FROM networkInterface WHERE interfaceName=\'bdg1\

    Hi all,
    On a SA 520 I got this error, every 10 seconds:
    sqlite3QueryResGet failed.Query:SELECT * FROM networkInterface WHERE interfaceName=\'bdg1\
    Internet access was very spoty and I couldn't reach the firewall administration on the LAN interface. Had to shutdown the appliance to get it working again.
    Firmware version is 2.1.7.1
    What could have happenend?
    With kind regards,
    Jeroen

    Hi, everything in the "Quick Reference" section should be commented out with ;
    You should change those settings further down in the php.ini file.
    Example:
    error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
    display_errors = Off
    Last edited by adrianx (2013-07-26 12:32:02)

  • Select * from viewname where 1 1 gives records back

    for one customer the following sql gives records back
    select * from viewname where 1&lt;&gt;1
    we asked the customer to send over the database to us but we can't reproduce this behaviour. We don't get any records. the problem is we don't have the same version of oracle they use 9.2.0.4 and we used 10.2.0.1. i can't download the 9i version anymore.
    Does anybody know of a bug in oracle which can cause such behaviour or a setting which can correct this?
    Edited by: BluShadow on 09-Aug-2012 10:06
    corrected the &lt;&gt; issue so it's visible. Please read {message:id=9360002} which describes this issue.

    951790 wrote:
    i suspect the customer would first want us to show that their version is the problem.It doesn't work like that. If your customer called Oracle Support and said... "we're experiencing problems and our database version is 9.2.0.4"... oracle would turn around and say "that version is no longer supported, please upgrade". If they insist on knowing that their version is the problem, then the answer is "yes, it's the problem, it has known bugs and newer versions are available that address thousands of issues since"
    Using a query with "where 1 &lt;&gt; 1" as a condition that is bringing back results, is clearly wrong. You have clearly shown that in other more recent versions of the database it is working ok, therefore you have already proven that there is a bug in the version they are using.
    They are suspecting our view has a design flaw. We have in our documentation stated requirements for our software are the 9 or 10 version of oracle or sql server. So for me there are a couple of possibilities:
    -we try to reproduce the query on their database on the same oracle database version as they are using - problem is we don't have this exact same version and oracle does not have this version for download on their site anymore or so it seemsThat's because it's no longer supported. Any good software house will keep on top of it's customers to ensure they are upgraded in line with Oracle's ability to support. So, partially, it's your companies fault for saying you support version 9, when clearly you can't.
    --i ask other more knowledgable people(hopefully this forum) who might know about such problems which might result in a correction in the customer oracle database configuration or know of a bug in the customers version which causes this behaviour.You'll be lucky to find people still using such an old version (you're talking a version that almost 10 years out of date). The best you can do is to log onto Oracle Support and search there for known issues... and the answer on those is likely to be a recommendation to patch or upgrade too.
    -we change the queries to these views so they won't try to give back any records on their serverHow will you know unless you are able to test them?

  • Retrieve optimize: select * from tb where mdate sysdate

    hi,
    i wrote a simple statement :
    select * from tb where mdate > sysdate;
    it takes long time to return resultset.
    when i use to_char() function,
    select * from tb where to_char(mdate,'yyyy-mm-dd') >
    to_char(sysdate,'yyyy-mm-dd');
    it runs faster.
    who can tell me why?
    thanks.

    Are you running each statement multiple times and averaging the results? If you run the date comparison once, then run the character comparison, it's likely that the data you want is already cached, so the secod statement may well return more quickly. If you average multiple runs, you can avoid this.
    Justin

  • Select * from tbl where product like ('abc','def','rgh');

    Hi Guys,
    My requirement is I need to filter by providing date value with some of the porduct details and prod_id may differ with product like
    prod_id product date
    01 abc 01/2012
    02 abc 02/2012
    03 def 03/2012
    How can we put multiple text conditions using LIKE operator in where clause of the sql query.
    if we use union to combine all the sql queries, how can we filter by entering date value.
    SQL>select * from tbl where product like ('abc','def','rgh');
    Please provide any ideas on the same.
    Thanks in advance!
    -LK

    select * from tab1 where regexp_like(product,'^abc|def|rgh');

Maybe you are looking for

  • Can not start data Collection service

    I have installed Fabric Manager version 3.3.(4). In the Performance Web Client I can not start the service Data Collection is in starting forever. I also could not stop it. I rebooted the server and the status for this service is in starting. Thanks,

  • Assigning a SAP Query to Transport Request

    Hi Friends I have a SAP Query, now I want it to transport to the other system, while saving the query it is not prompting for transport request. Is there any possibility to assign that SAP Query to a transport request, if yes, please let me know the

  • Assign plan/budget profile for internal order

    i just tried to use T-code KO22 to do change budget for an order, but error msg show 'Assign a plan or Budget profile to the object'.so i wonder how to create the plan or Budget profile and assigned it?  waiting for your answer....

  • Problem with accessing BIEE services

    Hello. I installed Oracle Database 10g, SOA Suite, Internet Application Server and Business Intelligence Enterprise Edition. It is running on Linux. When I enter AS homepage and go to - for example - Application Server Control from it it's ok - it ac

  • Help lighting effects greyed out in photoshop cc

    Have an RGB image  8 bit , using macbook pro  about 3 years old , the menu is greyed out cant access lighting effects filter  . done search no luck help please if possible . want to have sun light streaking through underwater thanks