How to return 0 on max function when no rows found

Hi everyone!
I am using a max fuction, but I want that the function return 0 if there are not rows that match with the conditions.
I was thinking in something like this
SELECT nvl(max(salary),0)
But it doesn't work, it doesn't show the value 0
Please someone can give and idea
Thanks a lot.

Hi,
Welcome to the forum!
NVL (salary, 0) returns either salary or 0 on each row. It does not change number of rows.
To make sure that rows exist, you can do an outer join, like this:
SELECT  NVL ( MAX (t.salary)
            , 0
            )    AS max_salary
FROM             dual
LEFT OUTER JOIN  table_x  t  ON  1 = 1
I hope this answers your question.
If not, post a little sample data (CREATE TABLE and INSERT statements, relevant columns only) for all the tables involved, and the results you want from that data.
Explain, using specific examples, how you get those results from that data.
Always say what version of Oracle you're using (e.g. 11.2.0.2.0).
See the forum FAQ {message:id=9360002}

Similar Messages

  • How to Avoid Errors in Max Function When Data Contains Blank Cells

    I have a column with duration values. However, it also contains some blank cells. These "blank cells" have formulas in them, but as the cells they reference too are blank the formula doesn't produce a result.>/p>
    I want to get the max value from this column. When I simply do =MAX(column-name) I get an error, presumably because some of the cells are blank. This table is going to be highly dynamic, so I don't want to limit the range of the MAX() function to only those cells with values.
    So does anyone know a solution for this, please? If I was some how able to create a formula which returned the range of cells with actual values, then I could use that in the MAX() function. Or, if I could somehow tell the MAX() function to ignore blank cells, but I'm not sure either of these are possible.
    Thanks,
    Nic

    I don't see a problem with "blank" (null string) cells mixed with duration cells.  MAX works fine with this mix of cells. But if the "blank" cells are numbers, not text, that gives an error.
    A formula always produces a result. A formula cannot result in a blank cell. The closest you can get to "blank" is a null string (the result of two quotes next to each other with nothing between them) . So the question is, what is the result that you are calling "blank"?

  • How come my bluetooth isn't functioning when i wish to bluetooth some pictures from my handphone?

    How come my bluetooth isn't functioning when i wish to bluetooth some pictures from my handphone?

    Bluetooth on the iPad is aimed at devices such as headphones and keyboards - this article lists the bluetooth profiles that are possible on iOS devices http://support.apple.com/kb/HT3647

  • How to achieve Fast-forward/rewind functions when using VideoDisplay

    I use "VideoDisplay" instance for progressive download of
    videoes from a server. Is anyone know how to add
    fast-forward/rewind functions using Actionscript 3 with
    VideoDisplay object?
    or is there anyway to do it when playing videoes through
    progressive download?
    Thanks in advance.

    Matt,
    Thank you very much for your help. The thread is quite
    interesting.
    I can only make the video jumping forward/backward at the
    step of 10 seconds by changing VideoDisplay's "playheadTime"
    property. When I set the step down to 1 second,
    the video is "frozing", and the playheadTime is going 1
    second forward/backward, then return back to where it is, and going
    1 second forward/backward, then return back to wheare it is again,
    and repeats forever.
    For the FLVPlayback class, it is not available in Flex
    builder 3, why?
    Thanks again,
    Regards,
    Fan

  • Query for a value result when no rows found

    Kindly help me out when I use following query it return no record but I want 0 against this query how plz let me know
    select b.accode,decode(sum(b.debit),null,0,sum(b.debit)) op_dr,
    decode(sum(b.credit),null,0,sum(b.credit)) op_cr,
    c.actitle
    from v_mast a, v_det b, chart c
    where a.v_type=b.v_type
    and a.vouchno=b.vouchno
    and b.accode=c.accode
    and a.VOID='F'
    and a.posted_by is not null
    and a.v_date between '01-JAN-06' and '31-JAN-06'
    and b.accode in (select accode from account where open='T')
    and b.accode in (select accode from chart)
    and a.v_type in ('RN','PV','CV','RV','JV')
    and b.accode = '3050571'
    group by b.accode,c.actitle
    order by b.accode
    Result is : No rows found but is there any possibilities that it will give me following result
    Accode op_dr op_cr
    3050571 0 0

    Why not respond to the earlier threads ?
    Query
    and
    0 when no records found
    Regards,
    Rob.
    Message was edited by:
    Rob van Wijk
    PS: Of course you could do a
    <your query> union all select 3050571,0,0,null from dual
    It answers the question, but I doubt that this is what you want.

  • How to returns multiple data with function in varray?

    Hi!
    I have 3 rows in my table and i want the return in VARRAY, but
    in my function bottom it works for only one row of my table.
    I don't know how to have the return of values in 3 rows of my table,
    it's possible to have multiple dimension in varray? Or another way for
    having that? Because i read after in java code this result.
    Now my result are :
    RetVal(1)= 504053
    RetVal(2)= 135058
    RetVal(3)= 206734
    I want like :
    RetVal(1)= 504053 Melanie Brown California
    RetVal(2)= 135058 John Smith Boston
    RetVal(3)= 206734 Roy Smith New York
    CREATE TYPE GPDEV.EMPARRAY is VARRAY(100) OF NUMBER
    CREATE FUNCTION MyName RETURN EMPARRAY
    AS
    l_data EmpArray := EmpArray();
    CURSOR c_emp IS SELECT MyTable
    FROM MyRow
    WHERE clientnumber is not null;
    BEGIN
    FOR MyTable IN c_emp LOOP
    l_data.extend;
    l_data(l_data.count) := MyTable.MyRow
    END LOOP;
    RETURN l_data;
    END;
    Thanks in advance for your help!
    Melanie

    Here is one approach...
    CREATE TYPE testType AS OBJECT (test_letter VARCHAR2(2), test_number NUMBER);
    DECLARE
    CURSOR cAAA IS
    select 'a' test_letter, 1 test_number FROM DUAL UNION ALL
    select 'b' test_letter, 2 test_number FROM DUAL UNION ALL
    select 'c' test_letter, 3 test_number FROM DUAL;
    TYPE vArray_testType is VARRAY(100) OF testType;
    testArray vArray_testType:=vArray_testType();
    y number:=0;
    BEGIN
    dbms_output.put('Adding items to varray...');
    FOR rec in cAAA LOOP
    y:=y+1;
    testArray.extend;
    testArray(y):= testType(
    test_letter => rec.test_letter,
    test_number=> rec.test_number);
    END LOOP;
    dbms_output.put_line('Done. ');
    dbms_output.put_line('Print contents of varray...');
    LOOP EXIT WHEN y = 0;
    dbms_output.put_line(testArray(y).test_letter||' '||testArray(y).test_number);
    y := y-1;
    END LOOP;
    dbms_output.put_line('END');
    END;

  • How to return multiples values useing functions

    Hi to all,
    I am using functions to return multiple values of two rows or multiple rows.
    For example emp id = 100 and i need to return the value for this(empid) input and output of this first_name and salary.
    I am tried in this way below but got errors (ORA-00932: inconsistent datatypes: expected NUMBER got HR.EMP_TYPE)
    create or replace type emp_type as object(first_name varchar2(20),salary number);
    create or replace function f1(empid in number)
    return emp_type
    as
    emp_record emp_type;
    begin
    select first_name,salary into emp_record.first_name,emp_record.salary from employees where employee_id = empid ;
    return emp_record;
    end;
    select f1(100) from dual;

    Sql is Sql and plsql is plsql. Though we can almost use all the sql objects inside a plsql code but vice versa is not always possible. Since plsql is tightly integrated with sql , if you return a number/date/varchar2 datatype values from plsql code to sql code,there is nothing wrong .Sql acknowledges this return type and knows well about how to handle it .But plsql record is a plsql specific datatype ,oracle was not built keeping in mind the fact that people will be creating difference types of records in plsql .So if you return a plsql datatype into a sql statement (which is processed by a sql engine) ,you need to tell oracle that I have written a plsql code which is going to return a record type so that sql engine can interpret it well.
    So all you need to do is create record in sql (known as object in sql ),when you make one, the entry is going to be shown in user_types views. Now use it like any other data type. I assume that the forum link provided in the above post is the best one to understand.
    Thanks,
    Rahul

  • How to return Varchar2(1) from function ?? Simple but annoying :(

    Hi,
    I have a function something like...
    CREATE OR REPLACE FUNCTION Test ( id number) RETURN VARCHAR2 ...
    Now I am using this function in a View as ...
    select
    test(123) as Test
    In the View description, this column appears as Varchar 4000. whereas I want it as varchar2(1).
    When i redefine the function return value
    CREATE OR REPLACE FUNCTION Test (id1 number) RETURN VARCHAR2(1) ...
    It gives error...
    Please suggest.
    Thanks in Advance.

    SQL> CREATE OR REPLACE FUNCTION Test ( id number) RETURN VARCHAR2
      2  as
      3  begin
      4    return 'A';
      5  end;
      6  /
    Functie is aangemaakt.
    SQL> create view v_test as select test(123) as test from dual
      2  /
    View is aangemaakt.
    SQL> desc v_test
    Naam                                                                      Null?    Type
    TEST                                                                               VARCHAR2(4000)
    SQL> create or replace view v_test as select cast(test(123) as varchar2(1)) as test from dual
      2  /
    View is aangemaakt.
    SQL> desc v_test
    Naam                                                                      Null?    Type
    TEST                                                                               VARCHAR2(1)Regards,
    Rob.

  • How to return a table from function

    Hi,
    I want to return a table from the function. But i'm unable to do it.
    can any one give me a peice of code.
    Thanks in advance.
    Regards,
    Alok

    Are you referring to a pipelined table function?
    Here is an example of such a function returning a "hailstone" sequence.. a number range that always end in 4,2,1. (see the [url http://en.wikipedia.org/wiki/Collatz_conjecture]Collatz Conjecture for more details on the maths used).
    SQL> create or replace type TNumbers is table of number;
    2 /
    Type created.
    SQL>
    SQL> create or replace function hailstone( nValue number ) return TNumbers pipelined is
    2 n number;
    3 begin
    4 n := nValue;
    5 loop
    6 PIPE ROW( n );
    7 exit when n = 1;
    8
    9 if MOD(n,2) != 0 then
    10 n := (n * 3) + 1;
    11 else
    12 n := n / 2;
    13
    14 end if;
    15 end loop;
    16 end;
    17 /
    Function created.
    SQL> show errors
    No errors.
    SQL>
    SQL>
    SQL> select * from TABLE( hailstone(10) );
    COLUMN_VALUE
    10
    5
    16
    8
    4
    2
    1
    7 rows selected.
    SQL> select * from TABLE( hailstone(1923413) );
    ..etc.

  • How do you change the max data when creating a DVD?

    I recently filmed a show and am making DVD copies. The show runs 1hour 45mins and is about 79gb in HD. I'm using compressor 4.1 to create the DVDs so it fits on one disc. I've made a few test copies but so far every DVD freezes at around 43 mins when I play it in another computer or dvd player. I heard in a blog that reducing the max data should solve the problem. This is my first time using compressor and I wanted to know where do you go to change the max data and how will that affect the video quality? Also, what is the suggested range of data limits for a project of this size?
    Thanks

    Duplicate the Create DVD preset from the Settings pane and name it.
    Select the MPEG setting in the batch window.
    Open the Inspector and click the Video tab.
    Choose your "Encoding Mode" (CBR, etc.).
    Uncheck Automatically Select Bit Rate.
    You can then move the slider: somewhere around 4 Mb per second should be about right.
    Just to add that you might also have a problem with the physical media. Try another brand to see whether that makes a difference.
    Russ

  • How to return ResultSet from one function to another?

    Hi friends,
    Greetings.
    How do we pass the query Results from one function to another function?
    Actually i have a database in the server and i am the client.
    Client sends the id to the server as an argument. From HTML file this goes to the JSP file(which i am using as a link between HTML and EJB) and then this goes to the RemoteInterface and then to the Bean itself. The functions are written in the bean. Bean connects to the database using jdbc:odbc driver and then a query is written and executed as follows:
    In the Stateless Session Bean, there is one function with the following query.
    public ResultSet check(String id)
    //other code
    ResultSet rs = Statement.("select * from table1 where id=123");
    if(!rs.next)
    // print no such id exists. other ids are
    rs=Statement.("select * from table1");
    return rs;
    I have written it approximately only because the problem is not with the query :(
    Now, in rs there's a resultset. Now how do i display it in a tabular format in HTML? This should obviously be done using JSP. How can we do it?
    In JSP file if i write
    ResultSet rs1=Remote.check(12);
    i get NullPointerException
    Thank you in anticipation to your reply!
    Regards

    Crossposted over all places:
    [http://forums.sun.com/thread.jspa?threadID=5336533]
    [http://forums.sun.com/thread.jspa?threadID=5336534]
    [http://forums.sun.com/thread.jspa?threadID=5336532]
    [http://forums.sun.com/thread.jspa?threadID=5336519]
    [http://forums.sun.com/thread.jspa?threadID=5336510]
    Stop crossposting. It's very rude.

  • How to return more data from function

    Following is the scenario:
    CREATE OR REPLACE TYPE OBJ IS OBJECT
    TEST_ID NUMBER(9),
    TEST_DESC VARCHAR(30)
    CREATE OR REPLACE FUNCTION FN_MY_DATA
    RETURN OBJ
    AS
    OBJ1 OBJ;
    BEGIN
    OBJ1.TEST_ID := 444;
    OBJ1.TEST_DESC := 'FFF';
    RETURN OBJ;
    END;
    I WANT USED VALUE TEST_ID AND TEST_DESC THE EXISTING IN FUNCTION FN_MY_DATA WITH A VARIABLES :
    DECLARE
    X NUMBER(9);
    Y VARCHAR(30);
    BEGIN
    X := -- VALUE TEST_ID EXISTING IN FN_MY_DATA;
    Y := -- VALUE TEST_DESC EXISTING IN FN_MY_DATA;
    END;

    see can oracle  function return more than one value
    SQL> CREATE OR REPLACE TYPE OBJ IS OBJECT
      2  (
      3  TEST_ID NUMBER(9),
      4  TEST_DESC VARCHAR(30)
      5  )
      6  /
    Type created.
    SQL> create or replace
      2  FUNCTION FN_MY_DATA
      3  RETURN OBJ
      4  as
      5  --obj1 obj;
      6  begin
      7  --OBJ1.TEST_ID := 444;
      8  --obj1.test_desc := 'FFF';
      9  return obj(444,'FFF');
    10  end;
    11  /
    Function created.
    SQL> set serveroutput on
    SQL> DECLARE
      2  X NUMBER(9);
      3  y varchar(30);
      4  l OBJ;
      5  begin
      6  l := fn_my_data();
      7  dbms_output.put_line(l.test_id || ' ' || l.test_desc);
      8  END;
      9  /
    444 FFF
    PL/SQL procedure successfully completed.
    SQL>

  • How to show Min and Max values when another value "changes to a new value"

    Hi
    If I have this data (generated with this query: SELECT 1 A, 1 B UNION ALL SELECT 2, 1 UNION ALL SELECT 3, 2 UNION ALL SELECT 4, 2 UNION ALL SELECT 5, 1)
    A B
    1 1
    2 1
    3 2
    4 2
    5 1
    How can I generate this data (created with this query SELECT 1 Amin, 2 Amax, 1 B UNION ALL SELECT 3, 4, 2 UNION ALL SELECT 5, 5, 1)
    Amin Amax B
    1 2 1
    3 4 2
    5 5 1
    Thanks.

    Please post DDL, so that people do not have to guess what the keys, constraints, Declarative Referential Integrity, data types, etc. in your schema are. Learn how to follow ISO-11179 data element naming conventions and formatting rules. Temporal data should
    use ISO-8601 formats. Code should be in Standard SQL as much as possible and not local dialect. 
    This is minimal polite behavior on SQL forums. You also do not know the ANSI/ISO syntax for insertion and you did the old Sybase insertion kludge wrong, that we need keys, etc.
    CREATE TABLE Foobar
    (foo_seq INTEGER NOT NULL PRIMARY KEY,
     glop_score INTEGER NOT NULL);
    INSERT INTO Foobar
    VALUE
    (1,1),
    (2,1),
    (3,2),
    (4,2),
    (5,1);
    >> How can I generate this data (created with this query SELECT 1 Amin, 2 Amax, 1 B UNION ALL SELECT 3, 4, 2 UNION ALL SELECT 5, 5, 1) <<
    This makes no sense; you have the wrong syntax and mixed data types. My guess is: 
    SELECT MIN(foo_seg), MAX(foo_seq), MAX(glop_score)
      FROM Foobar
     GROUP BY glop_score
    HAVING MIN(glop_score) = MAX(glop_score); 
    Amin Amax B
    1 2 1
    3 4 2
    5 5 1
    --CELKO-- Books in Celko Series for Morgan-Kaufmann Publishing: Analytics and OLAP in SQL / Data and Databases: Concepts in Practice Data / Measurements and Standards in SQL SQL for Smarties / SQL Programming Style / SQL Puzzles and Answers / Thinking
    in Sets / Trees and Hierarchies in SQL

  • How to return error from subscription function of an event

    I am creating a subscription function for an oracle shipped event, oracle.apps.eng.cm.changeObject.submit. The event fires fine, i can do my custom validations in this function. In case the validations fail, I need to return an error message.
    As per the guides and metalink documents, the way to do this is by returning 'ERROR' . But even though I return an ERROR, it does not error out. Whether I return SUCCESS or ERROR , the behaviour is the same.
    While creating the subscription function, for On Error , I selected, "Stop And Rollback ".
    Is it possible to return errors from the subscription functions.
    thanks
    Satya

    You shouldn't be passing ResultSet objects across the EJB layer.
    Instead you should be passing data back and forth.
    All of the data access code should be in one place in one class.
    That class should open the connection, run the query, process/store the results of the query and then close the connection.
    In this case you probably want to return a list of something to your jsp.
    So your EJB call should be more like
    public List<resultBean> check(String id){
      ResultSet rs = Statement.("select * from table1 where id=123");
      List resultList = new ArrayList();
      while (rs.next()){
        Bean myBean = new Bean();
        myBean.setProperty1(rs.getString("field1"));
        myBean.setProperty2(rs.getString("field2"));
        resultList.add(myBean);
      return resultList;
    }

  • How to route the workitem to Agent, when no agent found

    1.when agent is not found, i was able to see the workitem in swi2_freq.
       If this is case, how do i send workitem to an agent?
    2. As this is a general task, but i didn't see this workitem in all user's inbox. is it true that if agent not found for a workitem,will be sent to all agents?
    3. I set my userid as workflow administrator, but still am not able to forward workitems to any user in sap.(lack of authorizations). What kind of authorizations required to forward a workitem.
    Any inputs on this...

    1. Either you can set default agents for the task (or) modify the container elements in transaction SWIA (or) complete it manually without agent.
    2. Its true that, for a task specified as general task, all users become possible agents. Remember that they dont become responsible agents. SAP agent assignment always take the intersection of possible and responsible agents. If you donts specify responsible agents, you cannot see workitem in anyone's inbox.
    3. As told earlier, if you dont have authorization, check for the auth object in SU53 and get that added to your profile. Anyways, you can also check for the SAP provided standard authorizations for the workflow users in sap.com
    regards,
    Sandeep Josyula
    *Mark if helpful

Maybe you are looking for

  • Example programs

    hi please send me one example of follwing reports 1.alv 2.interactive report 3.classical

  • Cannot add memeber to group

    Hello since today I've a strange problem with SDS version 5.2.4. I cannot add member to 2 groups because in the group edit entry I see only "general" and "languages" but not "members". The problem is only in two of the 30 groups that I've. Regards Da

  • Campaign Element - field questionnaire

    Hello, In the element of campaign, in the u201CEdit modeu201D, it is possible to visualize the Survey in the field Questionnaire. In the u201Cvisualization modeu201D, the Survey description is not available. Does anyone know how to solve this? Thanks

  • Method for leave cursor from cell

    Hi Experts, I need to implement action on leave cursor from cell . here If after enter data for one cell then relevant data populated for other cells . please suggest the solution without using button or llink. Regards, BBC

  • How could I know my kernel is 32 or 64 bit. I know there is a parameter

    Hello How could I know my kernel is 32 or 64 bit. I know there is a parameter. But which Thank you in advance