Bu notumda ROW_NUMBER() komutundan bahsedeceğim ve daha sonrasında ise iki tablo arasında nasıl güncelleme yaparız ondan bahsedeceğim.
Öncelikle kısaca RIGHT komutundan bahsedeceğim. Bildiğiniz üzere RIGHT() ve LEFT() komutu string ifadelerde baştan veya sonra kaç karakter belirtir isek o kadarlık kısmını kesip alıyor. Örnek vermek gerekirse:
SELECT RIGHT('İlyas', 3) as DENEME ===>
SELECT LEFT('İlyas', 4) as DENEME ===> İlya
Burada ilk sorguda right komutu ile sonran 3 karakter almak istediğimizi belirtiyoruz. Şimdi gelelim right komutu ile Row_Number komutunu birlikte nasıl kullanacağız.
SELECT '120.01.' + RIGHT('000' + CONVERT(nvarchar, (ROW_NUMBER() OVER (ORDER BY ACTNAME))), 4) AS YENI_NO
FROM ACT
WHERE ACTNO LIKE '120%'
Buradaki senaryomuz şu şekilde. Şirketde yapmış olduğumuz bir işlemin küçük bir kısmı. Cari kartlarımızdan 120 ile başlayanların listeliyoruz. Bunların başına 120.01. ekliyoruz. Daha sonra ise 3 adet 000 koyuyoruz ve satır numaralarını yazmaya başlıyoruz. İlk başta 9a kadar sorun 0001, 0002, ....., 0009 şeklinde sonrasında ise 00010, 00011,....00099 şeklinde devam ediyor fakat biz sondan 4 haneyi al dediğimiz için 0010,....0099 şeklinde alıyor. Bu işlem 0999,....., 9998 şeklinde devam edip 9999 olduğunda bitiyor. Daha sonra güncelleme yada yeni kayıt ekleme gibi ne tür işlem yapacaksanız ve kayıt sayınıza göre hane sayısını artırıp azaltabilirsiniz yada noktadan sonra kaç karakter istiyorsanız ona göre düzenleyebilirsiniz.
Şimdi ise ikinci konumuza gelelim. Birbiri ile bağlantılı iki tablo arasında güncelleme işlemi yapacaksak kullanmamız gereken kod aşağıdaki gibidir:
UPDATE T1
SET T1.BIRIM111= T2.BIRIM222
FROM TABLO_1 T1 JOIN TABLO_2 T2
ON T1.ID = T2.ID
Burada Tablo_1'i güncelliyoruz. Tablo_1 ve Tablo_2'deki kayıtları eşleştiriyoruz ve Tablo_2'deki BIRIM222 sütunundaki bilgiyi Tablo_1'deki BIRIM111 alanına atıyoruz.
Herkese İyi Çalışmalar.
Hiç yorum yok:
Yorum Gönder