Selecting from different rows
Hi all,
The database is Oracle10g.
I want to select one column from one row of a table, based on a condition, and the second column of the second row of that first row of the same table.
There should be an order by clause to enable it so that I can talk about first row and second row.
For example : select ename , job from emp where deptno = 20; . And here the column ename is for the first employee of deptno 20 , and job is the column for the second employee in the same deptno.
How to achieve this ?
Thank you very much indeed
I think you want this.
SQL> create table test as select rownum id,'ROW '||rownum r from all_objects where rownum<=5;
Table created.
SQL> select * from test order by id;
ID R
1 ROW 1
2 ROW 2
3 ROW 3
4 ROW 4
5 ROW 5
SQL> select id,r,lead(r,1) over (order by id) next_r from test order by id;
ID R NEXT_R
1 ROW 1 ROW 2
2 ROW 2 ROW 3
3 ROW 3 ROW 4
4 ROW 4 ROW 5
5 ROW 5The feature you are looking for is analytic functions. You can read about them here: http://download.oracle.com/docs/cd/B19306_01/server.102/b14223/analysis.htm#sthref1684
Similar Messages
-
SUM two fileds from different rows from the same table
I would like to SUM two fileds from different rows from the same table but I don't know how to do that.
E.g.
BillingTransactionsIndex CreateDate UserType UserIndex TransType Reference Total Balance
2 6/5/2008 15:02 1 51 1 150 -288.2 -288.2
5 6/8/2008 11:55 1 51 1 157 -1.58674 -289.787
In the table above I want SUM fields Total and Balance for the first row and the the next row SUM 2nd row Total with 1st row Balance
Please help
ThanksSQL> with tbl as
2 (select 1 as ID, 90 as total from dual
3 union all
4 select 2 as ID, 23 as total from dual
5 union all
6 select 3 as ID, 15 as total from dual
7 union all
8 select 4 as ID, 20 as total from dual)
9 select id , total, sum(total) over (order by ID) as balance from tbl
10 /
ID TOTAL BALANCE
1 90 90
2 23 113
3 15 128
4 20 148
SQL> -
How to do a SELECT from different tables into an internal table?
How to do a SELECT from different tables into an internal table?
I want to select data from MARA, MARC and ZPERSON and populate my ITAB_FINAL
REPORT zinternal_table.
TABLES:
mara,
marc,
zperson.
TYPES:
BEGIN OF str_table1,
v_name LIKE zperson-zname,
v_matnr LIKE marc-matnr,
v_emarc LIKE marc-emarc,
v_werks_d LIKE marc-werks_d,
v_dstat LIKE marc-dstat,
END OF str_table,
i_table1 TYPE STANDARD TABLE OF str_table1.
DATA:
BEGIN OF str_table2,
v_mandt LIKE mara-mandt,
v_ernam LIKE mara-ernam,
v_laeda LIKE mara-laeda,
END OF str_table2,
itab_final LIKE STANDARD TABLE OF str_table2.first find the link between mara , marc and zperson , if u have link to 3 tables then u can jus write a join and populate the table u want ( thats final table with all the fields).
u defenitely have alink between mara and marc so join them and retrieve all data into one internal table.
then for all the entries in that internal table retrieve data from zperson into another internal table.
then loop at one internal table
read another internal table where key equals in both the tables.
finally assign fileds if sy-subrc = 0.
gs_finaltable-matnr = gs_table-matnr
etc...
and finally append gs_finaltable to gt_finaltable.
there u go ur final table has all the data u want.
regards
Edited by: BrightSide on Apr 2, 2009 3:49 PM -
SELECT returning different rows when issued from SQL Developer or Java apps
Hi there. I'm facing a problem here: I'm trying to issue a SELECT from Java, which should return me 2 rows; but I'm getting just one. When I issue the SELECT directly through SQL Developer it gives me the expected result. I've pastebin the code at http://paste.uni.cc/11821, where I've described in details the problem.
What could it be? Any help would be appreciated.
Thanks in advance!Marco,
I would code it a bit differently, but I don't think that would solve your problem.
I suggest setting up the JDBC logging. I'm not promising it will help, but I guess it
can't hurt. Here is a white paper about it:
http://www.oracle.com/technology/tech/java/sqlj_jdbc/pdf/logging%20white%20paper.pdf
You can also access that link from this Web page:
http://www.oracle.com/technology/tech/java/sqlj_jdbc/index.html
Good Luck,
Avi. -
Field selection from differant tables
hello all,
i need to select differant fields from differant tables when i select common fields from both the tables, is it necessary that the common field need to be a primary key in both tables.
thanks in advance
seenuHI,
No its not required that the common field be part of the primary key in both tables only thing is you need to prefix the table name if the field names are same. But if you are using a INNER JOIN then there is no need to select both fields since you know the content of both fields will be same if JOIN is ON these fileds as well.
Regards,
Sesh
Message was edited by:
Seshatalpasai Madala -
Selection from different tables
Hello Everyone,
I have a situation where I have 15 fields in the selection screen.
The selection is dependent on three or more tables.
First I have selected from two tables but if the user enters values in the selection screen then how to make the selection.
Tables dont have common fields between them. LIKP, LIPS, VTTK, VBUK and VEKP are the tables.
Can you guys guide me.
Thank you.Hi Vinod,
First I have selected from two tables but if the user enters values in the selection screen then how to make the selection.
Your query is not so clear. When are you fetching the data from two table whether before selection screen input (Initialization event) or after selection screen?
Can you please elaborate your query and better if you post your Selection Screen screen-shot.
Regards,
VIjay -
SELECTing from multiple rows and different tables
Basically, I have a table with a primary key and some other columns of data. The second table has a foreign key that points to the first table then has a columns with related data. I want to write construct a SQL query where one of the columns is the primary key from the first table and the second column is a concatenation of all the rows in the second table that have the same foreign key.
I need this in the form of one SQL statement so that I can use it to create a report in Application ExpressJust in case my first post was a bit unclear.
My first table has a primary key, INTERACTION_ID, and several other columns of data.
My second table has a foreign key, INTERACTION_ID, and one extra column, USER_NAME.
There are several rows in the second table that share the same INTERACTION_ID as each interaction can have many user names. I want to construct a SQL query where I pull the interaction id in one column and concatenate all the relevant rows of USER_NAME as the second column. -
Select from different tables based on value
Hi Forum,
I'm stuggling with a problem:
In a table, I have two columns, pref_type and pref_value. Column pref_type stores a number value that is linked to a preference type, whereas column pref_value stores the value of that preference.
Unfortunately, the data model is such that per preference type a different tables needs to be used, so for example, if
pref_type = 1, table to query is A, whereas if
pref_type = 2, table to query is B.
I now want to write a query that resolves the preferences, ie it should branch to the respective table based on pref_type and search for pref_value and deliver back a different column of that respective table.
My first approach was like that:
select decode (pref_value, 1, (select result from A where pref_value = ???),
2, (select result from B where pref_value = ???)
where the three ??? depict the problem I'm having, as Oracle doesn't allow me to have a harmonized subquery here.
How do I achieve this?
Thanks for any help,
J. SiebenI believe this is what you are trying to get at:
SELECT DECODE(m.pref_type, 1, (SELECT result FROM a
WHERE a.pref_value = m.pref_value),
2, (SELECT result FROM b
WHERE b.pref_value = m.pref_value)
FROM my_table mAlthough, if the tables are large, that might be pretty slow. Better than an outer join, but one of those correlated queries is going to be run for each row in my_table. You could lso try something like:
SELECT m.pref_type, r.result
FROM my_table m,
(SELECT 'A' tbl, pref_value, result
FROM a
UNION ALL
SELECT 'B', pref_value, result
FROM b) r
WHERE DECODE(m.pref_type, 1, 'A', 'B') = r.tbl and
m.pref_value = r.pref_valueHTH
John -
Select from different tables depending on results
how to do this in one select
4 tables
t3 and t4 are identical in structure but different data
select id from t1
If exists in select id from t2
then select data from t3
else
select data from t4
create table t1 (id number);
create table t2 (id number);
create table t3 (col1 varchar2(10), col2 varchar2(10));
create table t4 (col1 varchar2(10), col2 varchar2(10));
insert into t1 values(1);
insert into t1 values(2);
insert into t2 values(1);
insert into t3 values('DATA1','DATA2');
insert into t4 values('DATA3','DATA4');
commit;
Ive put values 1 and 2 into t1. as id=1 exists in t2, for that record I want the values from t3 but where id=2, I want the values from t4.
Possible in one select? Ive been playing with case statement but not getting anywhere near itHaving multiple table with same structure looks like a design flaw. What benefit that does bring. So please explain the reason to have 2 table with same structure.
Said that here are few more ways.
SQL> select id
2 , col1
3 , col2
4 from (
5 select t1.id
6 , decode(t2.id, null, 'T4', 'T3') table_handle
7 from t1
8 left
9 join t2
10 on t1.id = t2.id
11 ) a
12 join (
13 select 'T3' table_handle, col1, col2 from t3
14 union all
15 select 'T4' table_handle, col1, col2 from t4
16 ) b
17 on a.table_handle = b.table_handle;
ID COL1 COL2
1 DATA1 DATA2
2 DATA3 DATA4
SQL> select id
2 , col1
3 , col2
4 from (
5 select t1.id
6 , dbms_xmlgen.getxmltype('select col1, col2 from ' || decode(t2.id, null, 'T4', 'T3')) xml_data
7 from t1
8 left
9 join t2
10 on t1.id = t2.id
11 )
12 , xmltable
13 (
14 '/ROWSET/ROW' passing xml_data
15 columns col1 varchar2(10) path 'COL1',
16 col2 varchar2(10) path 'COL2'
17 );
ID COL1 COL2
1 DATA1 DATA2
2 DATA3 DATA4
SQL> -
i have a table1 on the top, but i want to create a view from table 1 as view mentioned beneath the table 2. Could any of you please help me.
table1
ID
office
employee
activity
1
246
-9999
698
2
##-99
21480
698
3
104
-9999
7025
4
##-99
88908
7025
5
108
-9999
2415
6
##-99
17135
2415
7
246
-9999
698
8
##-99
21480
698
9
104
-9999
7025
10
##-99
88908
7025
11
108
-9999
2415
12
##-99
17135
2415
view
ID
office
ID1
employee
activity
1
246
2
21480
698
3
104
4
88908
7025
5
108
6
17135
2415
7
246
8
21480
698
9
104
10
88908
7025
11
108
12
17135
2415declare @forumsTable table (ID int, officeID int, employeeID INT, activityID int)
insert into @forumsTable (ID, officeID, employeeID, activityID)
values
(1 ,246, -9999, 698 ),
(2 ,-99, 21480, 698 ),
(3 ,104, -9999, 7025),
(4 ,-99, 88908, 7025),
(5 ,108, -9999, 2415),
(6 ,-99, 17135, 2415),
(7 ,246, -9999, 698 ),
(8 ,-99, 21480, 698 ),
(9 ,104, -9999, 7025),
(10 ,-99, 88908, 7025),
(11 ,108, -9999, 2415),
(12 ,-99, 17135, 2415)
select f1.ID, f1.officeID, f2.ID as ID1, f1.employeeID, f1.activityID
from @forumsTable f1
inner join @forumsTable f2
on f1.activityID = f2.activityID
and f1.officeID > 0
and f2.employeeID > 0
and f1.id - f2.id = -1
You really need to improve the relationship here.
Perhaps you could make office and activity an exclusive pair. -
Multicube Keyfigure - to be selected from different Basis-Cube Keyfigures
Dear experts,
please give your advice how to do this:
Multiprovider based on 2 InfoCubes. InfoCube A containing keyfigure Z_KFA and InfoCube B containing keyfigure Z_KFB.
In the Multiprovider only 1 Keyfigure, containing both valued for Z_KFA and Z_KFB is needed.
So far only one basiscube with its keyfigure is shown for selection.
How can a keyfigure in MultiProvider be selected that it conatins both keyfigures of the basiscubes?
Thank you,
AngieHi Angie:
If you want to include the 2 Key Figures from your InfoCubes on 1 Key Figure on your Multiprovider you need to use the same Technical name for the Key Figures.
So you need to either...
- Rename Z_KFA (from your InfoCube A) to Z_KFB.
- Rename Z_KFB (from your InfoCube B) to Z_KFA.
Regards,
Francisco Milán. -
Can I do an Insert using two selects from different tables?
Hi,
I have three tables, Course (CID, NAME, TIME)
Teacher (TID, NAME, DESCRIPTION) and OfferedBy(CID, TID) to match a course to a teacher.
After I do an insert on Course, I want to be able to do an insert on OfferedBy using the CID of the course I inserted, and the TID of the teacher that's offering it.
I tried this after doing inserts on Course and Teacher:
INSERT INTO OfferedBy values (SELECT CID FROM Course where courseName = 'name' , SELECT TID FROM Teacher WHERE LastName = 'teacherName').
I get an ORA 00907 error.
What am I doing wrong? Can this actually be done?
Thank you
IHi,
How would you relate the TID with CID?
I tried this after doing inserts on Course and Teacher:
INSERT INTO OfferedBy values (SELECT CID FROM Course where courseName >= 'name' , SELECT TID FROM Teacher WHERE LastName = 'teacherName').
I get an ORA 00907 error.You can use the query in this way:
SQL> SELECT ( ( SELECT dummy FROM DUAL), (SELECT DUMMY FROM DUAL)) FROM DUAL;
SELECT ( ( SELECT dummy FROM DUAL), (SELECT DUMMY FROM DUAL)) FROM DUAL
ERROR at line 1:
ORA-00907: missing right parenthesis
SQL> SELECT 'AA',(SELECT dummy FROM DUAL) FROM DUAL;
'A (
AA X
SQL>Regards -
Concatenate items from different rows
We are looking for an aggregate function similiar to the 'count' function, however instead of counting the distinct occurances, we want to concatenate them together into one single string.
i.e.
TestTable:
ID Name
1 A
1 B
1 C
2 A
2 F
SELECT ID, makestring(Name) FROM TestTable;
Produces:
1 ABC
2 AF
If possible please reply by e-mail to:
[email protected]
Any help with this is appreciated
Mark EmersonMark: I think this is not the best solution in performance, but it can help you like a beginning:
create or replace function makestring (v_id number) return varchar2
is
cursor c is select Name from TestTable
where id=v_id;
str varchar2(10):='';
begin
for r in c loop
str:=str | | r.Name;
end loop;
return str;
end;
You must use the DISTINCT clause, like this:
SELECT DISTINCT id, makestring(id) FROM TestTable;
This SELECT display the results that you are looking for. The main problem of this function is the size of the TestTable, and It will be important to consider create an index in the ID column, if doesn't exist yet (and to be sure of its use, using hints if it's necessary). Bye and good luck. -
Update textbox by selecting a different row
It's like a messaging app so when you click on the selected
message title, the text shows in the textbox. Well, I've got a nice
list of message titles but what is the trick for updating the
textbox to reflect the message chosen? I can do this with separate
pages but that seems silly. I imagine this is something to do with
an onclick handler but can someone point me to an example?
Thanks!Hopefully, this will get you started:
<head>
<title>Untitled</title>
<style type="text/css">
.message-text-hidden{
display: none;
</style>
<script type="text/javascript">
function display(anElement){
var number = anElement.id.split('-')[1];
document.getElementById('message-text').value =
document.getElementById('message-' + number).innerHTML;
</script>
</head>
<body>
<div id="title-1" class="message-title"
onclick="display(this)">All you need to know about
investing.</div>
<div id="message-1" class="message-text-hidden">Start
early</div>
<input type="text" id="message-text"></input>
</body> -
Select 2 records (rows) in the results.
I am using Oracle R12- Forms.
After searched for all orders for a specific Customer, on the Results, I need to select 2 different rows.
Also tried ft object,but failed.
If manual, I use Keep holding the Ctrl Key, and Click for the first row, and Click 2nd row.
In OATS, I could not do this with the code below:
int rone=2;
int rtwo=5
Robot robot = new Robot();
robot.delay(5000);
// press and hold CONTROL key
robot.keyPress(KeyEvent.VK_CONTROL);
forms.textField("//forms:textField[(@name='MY_ORDER_NUM_"+rone+"')]").click();
forms.textField("//forms:textField[(@name='MY_ORDER_NUM_"+rtwo+"')]").click();
robot.keyRelease(KeyEvent.VK_CONTROL);
Any help is greatly appreciated.
Thanks,What you need is a tree.
See Tomahawk (www.myfaces.org)
Maybe you are looking for
-
Excise base value in ARE1 screen shows 0
Dear Gurus Even after excise calculation has been made in the excise invoice, Excise base value field from which basic excise duty is calculated is showing 0 value in ARE1 screen while we do J1ia101. other values such as BED, SHC are apperaing. Any
-
Find original calling program or transaction...
Hello, I want to keep a User-exit from running when it is ran from LT23, but I want it to work from LT11. The problem is when the function to confirm the TO is executed in LT23, it does a call transaction to LT11. So, in the user-exit SY-TCODE has LT
-
Unable to start and create new listener
hiii everybody, I m unable to start listener in win 7 (11g database) using services.msc bcoz it is showing "status as stopped" only and also unable to create a new listener using net configuration assistant which is giving error-"could not create lis
-
Performance tuning about select
hi experts: in one case : select ** ** ** into table tab from ** for all entries in t_tab where ** = t_tab-** and *** in ('1','
-
Report generation and Info Structure updation
Hi When are the Tables: S094 and other info structures gets updated?? For Example S094 is updated with materials and has the stock details and it have Goods issue MRP Goods issue Valuation etcu2026 I tried creating a material and created a PIR and ru