logo
Welcome Guest! To enable all features please Giriş or Kayıt.

Bildirim

Icon
Error

Ayarlar
Son mesaja git Go to first unread
mehmetzekikir  
#1 Gönderildi : 29 Ağustos 2016 Pazartesi 13:32:18(UTC)
mehmetzekikir

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
Yeniden geri döndük
2025


Bu konudaki kullanıcılar
Guest
Forumu Atla  
Bu foruma yeni konular postalayamazsınız.
Bu forumda ki konulara yeni posta gönderemezsiniz.
Bu forumdaki postalarınızı silemezsiniz.
Bu forumdaki postalarınızı düzenleyemezsiniz.
Bu forumda anketler yaratamazsınız.
Bu forumdaki anketlere oy veremezsiniz.