correlated subqueries
510937Aug 21 2008 — edited Aug 21 2008Hi, I am not able to get result that i want from a correlated subquery. I feel i am doing something wrong. Any help would be appreciated.
I have a table A
CREATE TABLE A
( "DEDW_CP_DATA_STAGING_NM" VARCHAR2(30) ,
"SOURCE_BATCH_PROCESS_NO" NUMBER(22,0) ,
"SOURCE_SYSTEM_CD" VARCHAR2(5)
);
with data
insert into A (DEDW_CP_DATA_STAGING_NM, SOURCE_BATCH_PROCESS_NO, SOURCE_SYSTEM_CD)
values ('DSTG_CP_STUDY_PAT01', 1, 'PAT01');
insert into A (DEDW_CP_DATA_STAGING_NM, SOURCE_BATCH_PROCESS_NO, SOURCE_SYSTEM_CD)
values ('DSTG_CP_STUDY_PAT01', 21, 'PAT01');
insert into A (DEDW_CP_DATA_STAGING_NM, SOURCE_BATCH_PROCESS_NO, SOURCE_SYSTEM_CD)
values ('DSTG_CP_STUDY_PAT01', 68, 'PAT01');
insert into A (DEDW_CP_DATA_STAGING_NM, SOURCE_BATCH_PROCESS_NO, SOURCE_SYSTEM_CD)
values ('DSTG_CP_STUDY_PLA01', 1, 'PLA01');
insert into A (DEDW_CP_DATA_STAGING_NM, SOURCE_BATCH_PROCESS_NO, SOURCE_SYSTEM_CD)
values ('DSTG_CP_STUDY_PLA01', 21, 'PLA01');
insert into A (DEDW_CP_DATA_STAGING_NM, SOURCE_BATCH_PROCESS_NO, SOURCE_SYSTEM_CD)
values ('DSTG_CP_STUDY_PLA01', 22, 'PLA01');
commit;
now I want as result the rows having (maximum) source_batch_process_no for each distinct DEDW_CP_DATA_STAGING_NM.
I want to know why the below correlated subquery giving me only one row instead of expected/required two rows
row 1 =DSTG_CP_STUDY_PAT01 68 PAT01
row 2= DSTG_CP_STUDY_PLA01 22 PLA01
select *
FROM a
WHERE SOURCE_BATCH_PROCESS_NO=
(SELECT MAX (B.SOURCE_BATCH_PROCESS_NO)
FROM a B
WHERE
B.SOURCE_SYSTEM_CD = SOURCE_SYSTEM_CD AND
B.DEDW_CP_DATA_STAGING_NM = DEDW_CP_DATA_STAGING_NM)
Version of DB
Oracle9i Enterprise Edition Release 9.2.0.7.0 - 64bit Production
Message was edited by:
user507934