रिकॉर्ड को ROW_NUMBER के साथ रैंक करें, ताकि किसी स्कू के लिए अधिकतम मान #1 हो जाए। फिर केवल उन्हीं रिकॉर्ड्स को #1 रैंक पर रखें।
select sku, item, value
from
(
select
mytable.*
row_number() over (partition by sku order by value desc) as rn
from mytable
)
where rn = 1;
SKU 1503818 के लिए आपको इन दोनों में से कोई एक मिलेगा:
1503818 1636708 0,9440251 1503818 1636709 0,9440251
यदि आप एक विशेष चाहते हैं (उदाहरण के लिए उच्च आइटम नंबर वाला) तो इस मानदंड को Row_Number के ORDER BY क्लॉज में जोड़ें।
प्रश्न के रूप में आपने स्वयं प्रयास किया:आपको इसके बजाय sku-value जोड़े की तलाश करनी चाहिए:
select SKU, ITEM, VALUE from import
where (sku,value) in (select sku, max(value) from import group by sku);
एक टाई के मामले में, जैसा कि एसकेयू 1503818 के साथ है, यह क्वेरी आपको दोनों रिकॉर्ड प्राप्त करेगी।