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,
NicI 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?
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 0Why 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!
MelanieHere 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,
AlokAre 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?
ThanksDuplicate 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!
RegardsCrossposted 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
SatyaYou 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
-
hi please send me one example of follwing reports 1.alv 2.interactive report 3.classical
-
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