Bir projemde, satış yapılan firmaların son 9 aylık aldığı ürünlerin içerisinde fiyatı en yüksek olan ürünleri listelemem gerekti. Row_Number ve Partition By kullanımına güzel bir örnek oldu.
Sorgu Group By kullanılarakta çözülebilir pekala. Ancak Row_Number ve Partition By kullanımını da bilmekte fayda var. Group By’ın çözüm olamayacağı yerlerde imdada yetişebilir.
Row_Number ve Partition By kullanımı:
select * from (select ROW_NUMBER() over(partition BY (Tip+Izo+Cap+Boy) order by OzelFiyat desc) AS sira, Tip,Izo,Cap,Boy,OzelFiyat from ProformaVerileri where Tekliftarihi >= DATEADD(MONTH, -9, GETDATE()) and ProfNo like 'TAS%') k where sira=1 order by Tip
Group By kullanımı:
select Tip,Izo,Cap,Boy,MAX(OzelFiyat) from ProformaVerileri where Tekliftarihi >= DATEADD(MONTH, -9, GETDATE()) and ProfNo like 'TAS%' GROUP BY Tip,Izo,Cap,Boy