Max function in select statemnt
Hi,
Can someone help me with what is wrong in the following query...How to use the max function
in ABAP program select statement??
Thanks..
LOOP AT IT_ANLA_ANLZ INTO WRK_ANLA_ANLZ.
SELECT KANSW
FROM ANLC INTO TABLE IT_ANLC WHERE GJAHR IN ( SELECT MAX(GJAHR) FROM ANLC ) and ANLN1 = WRK_ANLA_ANLZ-ANLN1
AND BUKRS = WRK_ANLA_ANLZ-BUKRS .
APPEND IT_ANLC.
ENDLOOP.
Hi,
You have write your select query once,
and then loop on the internal table into
which data will get populated for its display.
SELECT KANSW
FROM ANLC INTO TABLE IT_ANLC WHERE GJAHR IN
( SELECT MAX(GJAHR) FROM ANLC ) and ANLN1 = WRK_ANLA_ANLZ-ANLN1
AND BUKRS = WRK_ANLA_ANLZ-BUKRS .
Then loop at internal table:
LOOP AT IT_ANLA_ANLZ INTO WRK_ANLA_ANLZ.
write: / wrk_anla_anlz-fields.
Endloop.
Hope it helps
Regards
Mansi
Similar Messages
-
Use COUNT or MAX functions inside of a query, and you have no data found
I'm writing a query with a COUNT and a MAX function.
SELECT li.id
, MAX(m.display_date)
, COUNT(*)
FROM li JOIN m ON (m.LIID=li.LIID)
WHERE m.DISPLAY_DATE < SYSDATE - 7
GROUP BY li.id;I would like to write a query that returns always a row foe each row in the table li.
If there are no records with the condition "WHERE m.DISPLAY_DATE < SYSDATE - 7", I would like to have a row with
- COUNT(*) = 0
- MAX(m.display_date) = TO_DATE('2010-06-08', 'YYYY-MM-DD'user600979 wrote:
I'm writing a query with a COUNT and a MAX function.
SELECT li.id
, MAX(m.display_date)
, COUNT(*)
FROM li JOIN m ON (m.LIID=li.LIID)
WHERE m.DISPLAY_DATE < SYSDATE - 7
GROUP BY li.id;I would like to write a query that returns always a row foe each row in the table li.
If there are no records with the condition "WHERE m.DISPLAY_DATE < SYSDATE - 7", I would like to have a row with
- COUNT(*) = 0
- MAX(m.display_date) = TO_DATE('2010-06-08', 'YYYY-MM-DD'In that case tell me what do you want to display in the ID column. That is the first column? -
Hi Everyone,
Am aware of the following flavors of MAX function
1) choose MAX from the folders/fields list (selected items tab)
2) create calculation using: MAX keep dense
3) create calculation using: MAX analytic function
questions, pls:
===========
a) with MAX regular, MAX keep dense, MAX - analytic function
is it necessary to sort it using tools/sort - choose fields to sort by?
or does the data get sorted due to the ORDER BY clause in MAX used in a calculation
b) how to understand the diff. bet. MAX keep dense and MAX - analytic function
1) i understand that analytic functions are applied after detail row processing
does MAX keep dense calculation happen during detail row processing?
2) how did you know to advise when to use MAX keep dense, and when to use MAX - analytic function?
tx for your ideas and assistance, sandraHi,
a) with MAX regular, MAX keep dense, MAX - analytic function is it necessary to sort it using tools/sort - choose fields to sort by? or does the data get sorted due to the ORDER BY clause in MAX used in a calculationIt is only necessary to use a sort if you want to have the rows returned in a specific order. The order by in the max calculation defines the maximum within the group or window. It may affect the order the rows are returned, but if it does this is not guaranteed and you should use a sort on the main query.
b) how to understand the diff. bet. MAX keep dense and MAX - analytic function
1) i understand that analytic functions are applied after detail row processing does MAX keep dense calculation happen during detail row processing?Yes
2) how did you know to advise when to use MAX keep dense, and when to use MAX - analytic function?In general, if you want the result on a single row, so you have one row for each group then you should use the aggregate max. If you want to use the same max on all the rows in the window (defined by the partition) then use the analytic max.
Rod West -
Using max function in PL/SQL
VERY URGENT...
Am new to oracle...
I've written a package that display gif images in form of histogram/bar chart. using html,
I need to use max function to display values proportionately.
please help. i need to complete this assignment by 2/9/00 by 10.00 am at the latest. I've half written a function but I don't know if there's a simpler way fo doing this. html enabledFirst of all Thanks to all gentlemen who replied ..many thanks ...
Tried the ROW_NUMBER() option but still it is taking time...have given output for the query and tkprof results as well. Even when it doesn't fetch any record ( this is a valid cased because the input header id doesn't have any workflow request submitted & hence no entry in the wf_items table)..then also see the time it has taken.
Looked at the RANK & DENSE_RANK options which were suggested..but it is still taking time..
Any further suggestions or ideas as to how this could be resolved..
SELECT 'Y', 'Y', ITEM_KEY
FROM
( SELECT ITEM_KEY, ROW_NUMBER() OVER(ORDER BY BEGIN_DATE DESC) RN FROM
WF_ITEMS WHERE ITEM_TYPE = 'xxxxzzzz' AND ROOT_ACTIVITY = 'START_REQUESTS'
AND SUBSTR(ITEM_KEY,1,INSTR(ITEM_KEY,'-') - 1) = :B1
) T WHERE RN <= 1
call count cpu elapsed disk query current rows
Parse 0 0.00 0.00 0 0 0 0
Execute 1 0.00 1.57 0 0 0 0
Fetch 1 8700.00 544968.73 8180 8185 0 0
total 2 8700.00 544970.30 8180 8185 0 0
many thanks -
Regarding MAX() function
Hi,
I am having table A. I have few records in the table A. Database version : 9.2
ID name deleted
2 XYZ N
3 ABD N
4 GJK N
5 GJK N
6 HGY N
7 YJG N
8 PIN N
9 BMF N
10 OLG N
I used the following query...
SELECT MAX(ID) FROM A WHERE DELETED='N';
It was worked fine until now....
Now i used the same query...
But the result is
MAX(ID)
9
Please help me... What is the reason?
I want the correct result...
Thanks in advance....Kamran Agayev A. wrote:
Yes you can use TO_NUMBER inside MAX function and it will not give any error in the futureHave you tested it?
SQL> create table a (id,name,deleted)
2 as
3 select '2', 'XYZ', 'N' from dual union all
4 select '3', 'ABD', 'N' from dual union all
5 select '4', 'GJK', 'N' from dual union all
6 select '5', 'GJK', 'N' from dual union all
7 select '6', 'HGY', 'N' from dual union all
8 select '7', 'YJG', 'N' from dual union all
9 select '8', 'PIN', 'N' from dual union all
10 select '9', 'BMF', 'N' from dual union all
11 select '10', 'OLG', 'N' from dual
12 /
Tabel is aangemaakt.
SQL> select max(id)
2 from a
3 where deleted = 'N'
4 /
MA
9
1 rij is geselecteerd.
SQL> select max(to_number(id))
2 from a
3 where deleted = 'N'
4 /
MAX(TO_NUMBER(ID))
10
1 rij is geselecteerd.
SQL> insert into a values ('2A', 'ABC', 'N')
2 /
1 rij is aangemaakt.
SQL> select max(to_number(id))
2 from a
3 where deleted = 'N'
4 /
select max(to_number(id))
FOUT in regel 1:
.ORA-01722: invalid numberRegards,
Rob. -
Oracle:how to use max() function in case expression
how to use max() function in case expression, Please explain with any example
Hope this helps and should be self explanatory
with t as
(select 1 col,100 col2 from dual union
select 2 ,100 from dual union
select 2 ,200 from dual union
select 3,100 from dual union
select 3,200 from dual )
select col, case when max(col2)=100 then 'with 100 range'
when max(col2)=200 then 'with 200 range' end from t group by col -
Using Max Function in View Criteria
Hi
I am having a requirement where by i need to make use of max function in view criteria but not able to see any such option. Can someone please help me over it. Here is the requirement.
In table i will be having multiple rows for an employee and i need to pick latest row based on a column say request_id For e.g.
Emp RequestId
A 1
A 2
A 3
A 4
So if i pass the employee id i should get Row Number 4. In simple SQL language I want something like this
select * from emp where empid=A and requestid=( select max(requestid) from emp where empid=A)
Just wanted to know is there any approach that i can use to do all this as part of View Criteria or any other way.
Any help is appreciated!!!
Thanks
AJOne way is this -
1)https://blogs.oracle.com/adf/entry/using_groovy_aggregate_functions_in (You might need to create a self-referencing VL for this , try if it works using a ViewAccessor too)
OR
Order by RequestId descending in your SQL for the VO if thats ok , then have the ViewCriteria for the EmpId and programmatically pickup the first row... -
Problem with max function in air
Hello ,how are you,I write this query : [b]SELECT *, max(trackerId) FROM sessiontracker [/b]in
sqlite manager and it works ,but when I use it in Air application ,it send me back this error:
ReferenceError: Error #1056: Cannot create property max(trackerId) on
com.afarinesh.models.SessionTracke
,I guess that Actionscript 3 can not pars max function.
I appreciate your helpHello,
AIR does support max function. Please see Page 1067 of the actionscript developer's guide, which can be download from http://help.adobe.com/en_US/as3/dev/as3_devguide.pdf. And I tried the max function in my AIR application: create a table, insert some records into the table, and use the "select *, max(column) from table". It works fine.
I noticed your error is the ReferenceError and related to some AS class. So I am not sure if you use any ORM tool. If so, the issue may be caused by the use of the tool. Please check the configuration and usage of the tool.
Thanks,
Yang -
Max value without using max() function
Hi
Is there any way to get the max value from a table without using MAX() function
Thankswell if you think about it i'm sure you'll find a solution
what does max(field) means, it simply is the value of the field where no other value of the same field that is > than this value exists.
consider the following :
table TAB(
fld NUMBER(5));
translate the logic and you'll have
select a.fld from TAB a where NOT EXISTS(select b.fld from TAB b where b.fld>a.fld) and rownum=1;
of course there are better ways i'm sure, you'll just have to figure'em out. -
I have the following tables along with their attributes(the
stared fields show the primary key:
Agent(AgentPhoneNo*, NameOfAgent)
Constituency(ConstituencyNo*,
ConstituencyName,District,RegionCode)
PollingStation(StationNo*,ConstituencyNo*,AgentPhoneNo,
StationName)
VoteResults(Party*, ResultsCategory*,Votes, AgentPhoneNo*)
Results category has two values (S,L) and the number of
parties is variable
My issue is this, below is my code that returns the total
votes received by each party with each constituency. This
query works fine.
<cfquery name="WinningPartyinConstituency"
datasource="#request.datasource#">
SELECT c.ConstituencyName, s.ConstituencyNo, v.Party,
Sum(v.Votes) AS TotalVotes
From (Constituency c
INNER JOIN PollingStation s ON c.ConstituencyNo =
s.ConstituencyNo)
INNER JOIN VoteResults v ON s.AgentPhoneNo = v.AgentPhoneNo
WHERE v.ResultCategory = 'L' AND s.ConstituencyNo IN (Select
ConstituencyNo From Constituency)
Group By c.ConstituencyName, s.ConstituencyNo, v.Party
Order By c.ConstituencyName
</cfquery>
Now I want to check and return the name and total votes of
the party with the maximum votes within each constituency. And but
I can't seem to figure out how to do that, especially because the
max() function takes only to
values.
I will appreciate any guidance on how to write a query that
returns the the party with the maximum votes in each constituency
and the votes it got. TIAMy approach would be to do 2 or 3 Q of Qs to get the numbers
I need. -
Bug? using MAX() function on char(1) column returns something larger
details:
-- we have a complex nested query, where we are essentially returning the max() value into a variable
-- the max() function is being used on a char(1) column
-- where MAX() is part of an inner select, we have started getting
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
errors.
SELECT MAX(X) INTO var FROM ... works in 9i and 10g
SELECT X INTO var FROM (SELECT MAX(X) X FROM ... worked in 9i, does not work in 10g!
-- We never had problems with the code until upgrading to 10g release 2.
-- the Solution is to cast the final value with TO_CHAR(). The cast MUST be done at the outer most point of the select:
SELECT TO_CHAR(X) INTO var FROM (SELECT MAX(X) X FROM ... works
SELECT X INTO var FROM (SELECT TO_CHAR(MAX(X)) X FROM ... causes an error!
The following script demonstrates the issue, and includes the solution:
* October 3, 2006
* Possible SQL bug introduced with Oracle 10G
* Natalie Gray DBA/Developer, Environment Canada
* Description:
* Have discovered a problem with using the MAX() function
* on columns of type char(1)
* only an issue when used in an inner select
* solution (see test 4)
CREATE TABLE SQL_BUG_TEST
X NUMBER,
Y NUMBER,
Z CHAR(1)
INSERT INTO SQL_BUG_TEST (X, Y, Z)
VALUES (1,1,'A');
INSERT INTO SQL_BUG_TEST (X, Y, Z)
VALUES (1,1,'B');
INSERT INTO SQL_BUG_TEST (X, Y, Z)
VALUES (1,2,'C');
INSERT INTO SQL_BUG_TEST (X, Y, Z)
VALUES (1,2,'D');
DECLARE
TYPE REC IS RECORD (
x SQL_BUG_TEST.X%TYPE,
y SQL_BUG_TEST.Y%TYPE,
z SQL_BUG_TEST.Z%TYPE
v_rec REC;
BEGIN
-- DISPLAY THE TABLE DATA
BEGIN
DBMS_OUTPUT.PUT_LINE('TABLE DATA:');
DBMS_OUTPUT.PUT_LINE('');
DBMS_OUTPUT.PUT_LINE('SELECT * FROM SQL_BUG_TEST ORDER BY X,Y,Z;');
FOR crs IN (SELECT *
FROM SQL_BUG_TEST
ORDER BY X,Y,Z) LOOP
DBMS_OUTPUT.PUT_LINE(':'||crs.X||':'||crs.Y||':'||crs.Z);
END LOOP;
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
-- TEST 1
-- returning result from MAX into a variable when the MAX is in the outer most select
-- does not cause an error
BEGIN
DBMS_OUTPUT.PUT_LINE('*****************************************************');
DBMS_OUTPUT.PUT_LINE('TEST 1');
DBMS_OUTPUT.PUT_LINE('');
DBMS_OUTPUT.PUT_LINE('SELECT X, Y, MAX(Z) Z');
DBMS_OUTPUT.PUT_LINE('FROM SQL_BUG_TEST');
DBMS_OUTPUT.PUT_LINE('GROUP BY X,Y');
FOR crs IN (SELECT X, Y, MAX(Z) Z
FROM SQL_BUG_TEST
GROUP BY X, Y
ORDER BY X,Y,Z) LOOP
DBMS_OUTPUT.PUT_LINE(':'||crs.X||':'||crs.Y||':'||crs.Z);
END LOOP;
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
-- TEST 2
-- returning MAX() from an inner select to an outer select and then into a variable
-- causes an error
BEGIN
DBMS_OUTPUT.PUT_LINE('*****************************************************');
DBMS_OUTPUT.PUT_LINE('TEST 2');
DBMS_OUTPUT.PUT_LINE('THIS DID NOT CAUSE AN ERROR WITH ORACLE 9i');
DBMS_OUTPUT.PUT_LINE('');
DBMS_OUTPUT.PUT_LINE('SELECT * INTO v_rec');
DBMS_OUTPUT.PUT_LINE('FROM');
DBMS_OUTPUT.PUT_LINE('(SELECT X, Y, MAX(Z) Z');
DBMS_OUTPUT.PUT_LINE('FROM SQL_BUG_TEST');
DBMS_OUTPUT.PUT_LINE('GROUP BY X,Y)');
DBMS_OUTPUT.PUT_LINE('WHERE Y = 1');
SELECT * INTO v_rec
FROM
(SELECT X, Y, MAX(Z) Z
FROM SQL_BUG_TEST
GROUP BY X, Y)
WHERE Y = 1;
DBMS_OUTPUT.PUT_LINE(':'||v_rec.X||':'||v_rec.Y||':'||v_rec.Z);
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
-- TEST 3
-- casting the result from MAX to char before returning to the outer select
-- still causes an error
BEGIN
DBMS_OUTPUT.PUT_LINE('*****************************************************');
DBMS_OUTPUT.PUT_LINE('TEST 3');
DBMS_OUTPUT.PUT_LINE('');
DBMS_OUTPUT.PUT_LINE('SELECT * INTO v_rec');
DBMS_OUTPUT.PUT_LINE('FROM');
DBMS_OUTPUT.PUT_LINE('(SELECT X, Y, to_char(MAX(Z)) Z');
DBMS_OUTPUT.PUT_LINE('FROM SQL_BUG_TEST');
DBMS_OUTPUT.PUT_LINE('GROUP BY X,Y)');
DBMS_OUTPUT.PUT_LINE('WHERE Y = 1');
SELECT * INTO v_rec
FROM
(SELECT X, Y, to_char(MAX(Z)) Z
FROM SQL_BUG_TEST
GROUP BY X, Y)
WHERE Y = 1;
DBMS_OUTPUT.PUT_LINE(':'||v_rec.X||':'||v_rec.Y||':'||v_rec.Z);
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
-- TEST 4 - SOLUTION
-- the return value of MAX must be cast with to_char at the point where it is assigned to
-- variable (outer most select)
BEGIN
DBMS_OUTPUT.PUT_LINE('*****************************************************');
DBMS_OUTPUT.PUT_LINE('TEST 4 SOLUTION');
DBMS_OUTPUT.PUT_LINE('');
DBMS_OUTPUT.PUT_LINE('SELECT X, Y, TO_CHAR(Z) Z INTO v_rec');
DBMS_OUTPUT.PUT_LINE('FROM');
DBMS_OUTPUT.PUT_LINE('(SELECT X, Y, MAX(Z) Z');
DBMS_OUTPUT.PUT_LINE('FROM SQL_BUG_TEST');
DBMS_OUTPUT.PUT_LINE('GROUP BY X,Y)');
DBMS_OUTPUT.PUT_LINE('WHERE Y = 1');
SELECT X, Y, TO_CHAR(Z) Z INTO v_rec
FROM
(SELECT X, Y, MAX(Z) Z
FROM SQL_BUG_TEST
GROUP BY X, Y)
WHERE Y = 1;
DBMS_OUTPUT.PUT_LINE(':'||v_rec.X||':'||v_rec.Y||':'||v_rec.Z);
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
END;I certainly looks like a bug, but you should raise an iTAR on Metalink since Oracle does not monitor this forum.
I was able to replicate your results on my 10.2.0.1 database.
There is an easier workaround than yours. Try
ALTER TABLE sql_bug_test MODIFY (z VARCHAR2(1));That seems to eliminate the problem on my instance.
John -
Can I use Count, Max function in PLSQL BLOCK.
Can U help me to use count, max function in PLSQL BLOCK.
Because it is giving me error "It is a SQL function"SELECT COUNT(*)
INTO l_variable
FROM dual;
Will work inside PL/SQL -
Max() function in Data services
Hi Experts,
i'm using Data services (etl), and working on budget table(ms sql table),
1. the table has a field [budget amount] and [version_no],
2. before i extract the budget amount i need to know the highest version in [version_no] fields
3. can any body help me on this? i tried to use the script: ifthenelse(max(version-no),budget_amount, 0) but it retuns error when validation.
please help me on this:
thanks in advance
Archie72Hi,
Connect a Query transform say Query1 from the source table
Inside Query1
select MAX(version no) into the output. Do not select the other budget field into the output.
Connect another Query transform say Query2 from the source table. Connect the output of Query1 also into Query2.
Inside Query2:
Join the source table and Query 1 in where
Query1.version no = SourceTable.version no
Select version no and budget into Query 2 output and connect it to target table.
Assuming that the source table has only version number and budget. You might have to tweak and make use of Group By as required where you use the MAX() function. SourceTable mentioned in the where condition will be replaced with your exact source table name
Regards,
Suneer -
Max Function in @Prompt
Hi,
We have a week dimension in our Cal table. The user wants to use a condition where if he will enter week number (for eg: 13-2009) then data of that particular week should be displayed and if he will enter ' * ' then data of last week in the table will be displayed.
To fetch the last week we can use max(cal.week). But how to use it in prompt? Because when I am using max function then getting an error that group functions are not supported in prompt. Below is the prompt condition I am using:
CAL.WEEK IN (decode(@Prompt('Enter week (or * for last week)', 'A',, MONO,FREE),'*',(MAX(CAL.WEEK)),@Prompt('Enter week (or * for last week)', 'A',, MONO,FREE)))
I tried it by creating an object for MAX(CAL.WEEK) and then tried to use it in prompt, but since prompt doesnot support it, this object was not visible in the object list while creating the prompt.
Please help.
Thanks,
KirtiThe problem you are facing is that a condition containing a grouping function belongs in the having close, not in the where...
There is no way to create something in the universe that will be put in the having clause.
So what you need is to put it in as subselect, which can go in the where.
Try the predefined filter like this...
(CAL.WEEK = @Prompt('Enter week (or * for last week)', 'A',, MONO,FREE)
OR (@Prompt('Enter week (or * for last week)', 'A',, MONO,FREE)='*'
AND CAL.WEEK=(SELECT max(C2.WEEK) FROM CAL C2)))
Do not forget the brackets around the two conditions with OR
Good luck,
Marianne -
Hi,
One of our customers is facing an error while executing a PL/SQL block like,
declare
l_flag varchar2(30);
begin
select max('Y') into l_flag from v$database; -- Can use any table here
end;
however, when the select query is changed to as follows, no error is seen.
select substr(max('Y'),1,30) into l_flag from v$database;
Can someone please help me in identifying what could be issue?
Thanks,
DolaWe are actually trying to check if the table contains any rows.Hmmm, I would have thought that using a MAX() function to do that is rather expensive (if it's a large table)...
SQL> set autotrace traceonly stat
SQL> select max('Y') from tt1
2 /
Statistics
0 recursive calls
0 db block gets
432 consistent gets
428 physical reads
0 redo size
378 bytes sent via SQL*Net to client
499 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
SQL>
SQL> select count(*) from tt1
2 /
Statistics
0 recursive calls
0 db block gets
432 consistent gets
423 physical reads
0 redo size
381 bytes sent via SQL*Net to client
499 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
SQL>
SQL> select null from tt1
2 where rownum = 1
3 /
Statistics
0 recursive calls
0 db block gets
4 consistent gets
5 physical reads
0 redo size
372 bytes sent via SQL*Net to client
499 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
SQL> Cheers, APC
Maybe you are looking for
-
Payment type is missing the "none" button
I have an iPod touch. Logged on to my apple account through itunes, I wanted to put none for my account payment and the "none" button is there on the payment information page. Now I can't even download my updates on my ipod.
-
I have started a website for an art group I belong to. It has been a win-win situation, as I'm practicing and feeling very confident that I can manage a nice site with Muse, the group are very happy with the site, and impressed with my ability. It's
-
I'm using a DisplayPort KVM to switch a DVI monitor between two DisplayPort Macs. One of those Macs is a MacBook Pro (model 8,2) and so that DisplayPort is actually a Thunderbolt port. I keep the MacBook Pro closed as I'm using the aforementioned DVI
-
Can I create more than one GRIR account and if so how?
-
Problem in uploading data for the Tcode CA02
Hi, I am trying to upload the data for the Tcode ca02 and i am facing a problem i.e. the uploading for the for the 18th inspection characterstic is not able to being uploaded. I had checked the code of it and the logic is there. It was previously