SQL Oracle - max function -
i need query, need code name address recent date per code (date1 < date6 in example)
tab1
code address ==================== cod1 addr1 cod2 addr2 cod3 addr3 cod4 addr4 tab2
code date name =========================== cod1 date1 name1 cod1 date2 name1 cod1 date3 name2 cod2 date3 name3 cod3 date5 name4 cod3 date6 name5 cod4 date3 name6 so write
select tab1.code, tab1.address, tab2.name, max(tab2.date) tab1, tab2 tab1.code=tab2.code group tab1.code, tab1.address, tab2.name order tab2.name but not want, same code multiple times different dates, guess join or nested select necessary, being little ignorant i'm asking here help
you can use either analytics or aggregate functions.
select code, address, name, date (select tab1.code, tab1.address, tab2.name, tab2.date, row_number() on (partition tab1.code order tab2.date desc) rn tab1 join tab2 on tab1.code = tab2.code) rn = 1 select tab1.code, tab1.address, max(tab2.name) keep (dense_rank first order tab2.date desc) name, max(tab2.date) keep (dense_rank first order tab2.date desc) date tab1 join tab2 on tab1.code = tab2.code group tab1.code, tab1.address this select 1 row each row in table 1. if there 2 rows in table 2 same date same code, 1 row chosen arbitrarily.
Comments
Post a Comment