Sıralama: Administration
Gruplar: Administrators
Katılan: 6.05.2014(UTC) Mesajlar: 672
19 Kere Teşekkür Etti. 152 Mesajına Toplam 253 Kere Teşekkür Edildi.
|
SQL -- ROW_NUMBER kullanımı Merhabalar Sqlde bazen bütün kolonlar biribirini tekrar eder ama sadece 1 kolon farklıdır, işte bu durumda biz hep 1 tanesini secmek isteriz, bunu yapmanın çeşitli yöntemleri vardır, biz bugun row_number ı göreceğiz, bir tane tablo tipinde bir değişken tanımlayalım Kod:
Declare @tablo table(Nesne varchar(100), fiyat float)
insert into @tablo
select 'Nesne1', 12 union all
select 'Nesne1', 21 union all
select 'Nesne1', 122 union all
select 'Nesne2', 321 union all
select 'Nesne2', 123 union all
select 'Nesne3', 222 union all
select 'Nesne3', 32 union all
select 'Nesne4', 221 union all
select 'Nesne4', 123 union all
select 'Nesne4', 122
select row_number() over(order by Nesne) as row_number, * from @tablo
Çıktı olarak karşımıza row_number Nesne fiyat 1 Nesne1 12 2 Nesne1 21 3 Nesne1 122 4 Nesne2 321 5 Nesne2 123 6 Nesne3 222 7 Nesne3 32 8 Nesne4 221 9 Nesne4 123 10 Nesne4 122 Burada görüldüğü gibi bize sadece increamental bir id atadı , Şimdi ise nesne tipinde bir gruplama yapalım Kod:
Declare @tablo table(Nesne varchar(100), fiyat float)
insert into @tablo
select 'Nesne1', 12 union all
select 'Nesne1', 21 union all
select 'Nesne1', 122 union all
select 'Nesne2', 321 union all
select 'Nesne2', 123 union all
select 'Nesne3', 222 union all
select 'Nesne3', 32 union all
select 'Nesne4', 221 union all
select 'Nesne4', 123 union all
select 'Nesne4', 122
select row_number() over(partition by Nesne order by Nesne) as row_number, * from @tablo
row_number Nesne fiyat 1 Nesne1 12 2 Nesne1 21 3 Nesne1 122 1 Nesne2 321 2 Nesne2 123 1 Nesne3 222 2 Nesne3 32 1 Nesne4 221 2 Nesne4 123 3 Nesne4 122 şimdi de row number ı 1 olanları getirelim Kod:
Declare @tablo table(Nesne varchar(100), fiyat float)
insert into @tablo
select 'Nesne1', 12 union all
select 'Nesne1', 21 union all
select 'Nesne1', 122 union all
select 'Nesne2', 321 union all
select 'Nesne2', 123 union all
select 'Nesne3', 222 union all
select 'Nesne3', 32 union all
select 'Nesne4', 221 union all
select 'Nesne4', 123 union all
select 'Nesne4', 122
select * from (
select row_number() over(partition by Nesne order by Nesne) as row_number, * from @tablo)aa
where aa.row_number = 1
row_number Nesne fiyat 1 Nesne1 12 1 Nesne2 321 1 Nesne3 222 1 Nesne4 221 |