Rangschik de records met ROW_NUMBER, zodat de maximale waarde voor een sku #1 wordt. Bewaar dan alleen die records die op nummer 1 staan.
select sku, item, value
from
(
select
mytable.*
row_number() over (partition by sku order by value desc) as rn
from mytable
)
where rn = 1;
Voor SKU 1503818 krijgt u een van deze twee:
1503818 1636708 0,9440251 1503818 1636709 0,9440251
Als je een bepaalde wilt (bijvoorbeeld degene met het hogere artikelnummer), voeg dan dit criterium toe aan de ORDER BY-clausule van Row_Number.
Wat betreft de zoekopdracht die je zelf hebt geprobeerd:je zou in plaats daarvan moeten zoeken naar sku-waardeparen:
select SKU, ITEM, VALUE from import
where (sku,value) in (select sku, max(value) from import group by sku);
In het geval van een gelijkspel, zoals bij SKU 1503818, levert deze query u echter beide records op.