Nuggit Posted June 18, 2015 Share Posted June 18, 2015 Hej! Jag håller på och jobbar med en vy för tillfället som ställer till oreda, framförallt i mitt huvud tror jag. Tabellen som innehåller datan jag ska snygga till innehåller följande: PART NO VALID_FROM DISCOUNT 0392WJ 2009-11-27 10 0392WJ 2014-01-01 20 0392WJ 2018-06-15 99 0402WJ 2014-02-01 25 Det jag vill ha ut är: För varje nytt partnummer vill jag ha den raden som har högsta datumet men INTE i framtiden. så i det här fallet vill jag att vyn ska innehålla följande rader PART NO VALID_FROM DISCOUNT 0402WJ 2014-02-01 25 0392WJ 2014-01-01 20 Jag har testat med select * from (select catalog_no,valid_from,discountfrom discount_tableorder by valid_from_date desc)where rownum = 1 Men det genererar ju enbart den raden med högsta datumet, oavsett part_no Hur tusan gör man detta på enklast sätt? /Niklas Link to comment Share on other sites More sharing options...
jarlh Posted June 24, 2015 Share Posted June 24, 2015 Leta reda på de rader där det inte existerar annan rad med samma PART NO men senare datum. Använd NOT EXISTS: select dt1.catalog_no, dt1.valid_from, dt1.discountfrom discount_table dt1 where dt1.valid_from < current_date and NOT EXISTS (select 1 from discount_table dt2 where dt2.catalog_no = dt1.catalog_no and dt2.valid_from < current_date and dt2.valid_from > dt1.valid_from) Alternativt, använd en sub-select för att ta fram senaste datumet: select dt1.catalog_no, dt1.valid_from, dt1.discountfrom discount_table dt1 where dt1.valid_from = (select max(valid_from) from discount_table dt2 where dt2.catalog_no = dt1.catalog_no and dt2.valid_from < current_date) Eller gör ungefär samma sak, fast med en join där en GROUP BY används för att ta fram varje senaste datum för varje catalog_no: select dt1.catalog_no, dt1.valid_from, dt1.discountfrom discount_table dt1 JOIN (select catalog_no, max(valid_from) from discount_table where valid_from < current_date group by catalog_no) dt2 ON dt1.catalog_no = dt2.catalog_no AND dt1.valid_from = dt2.valid_from Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.