Forum

SQL Sıralama Sorunu
 
Bildirimler
Hepsini Temizle

[Çözüldü] SQL Sıralama Sorunu

3 Yazılar
2 Üyeler
2 Likes
235 Görüntüleme
(@ermanispir)
Gönderiler: 87
Estimable Member
Konu başlatıcı
 

Merhaba arkadaşlar. 

Tam nasıl anlatacağımı bilmiyorum ama şöyle bir problemim var,

Aşağıda görüldüğü üzere bir adet tablom ve iki adet sütunum var.(SUTUN1,SUTUN2)  Bu tabloyu bir select komutu yazarak üçüncü sütunu oluşturmam gerekiyor ama bir türlü çözemedim.

image

 

K bilgisine dikkat ederseniz,

11li K grubuna 1

12li K grubuna 2

14lü K grubuna 3 numarasını vermem gerekiyor.

yani yazacağımız select kodu SUTUN3 ü vermesi gerekiyor

 

Umarım anlatabilmişimdir yardımlarınız için teşekkür ederim.

 

 

 

Bu konu 4 ay önce Erman İSPİR tarafından düzenlendi
 
Gönderildi : 20/10/2023 08:31

(@vedatozerr)
Gönderiler: 63
Trusted Member
 

Selamlar,

Aşşağıdaki sorguyu deneyebilir misiniz ? 

 

DECLARE @TABLO TABLE
(
 ID    INT IDENTITY(1,1),
 SAYI INT,
 DEGER NVARCHAR(10)
 UNIQUE CLUSTERED (ID,DEGER)
 )
 
INSERT INTO @TABLO (SAYI,DEGER)
VALUES ('11','K'),('11','K'),('12','K'),('13','B'),('13','B'),('13','B'),('14','K')
 
 
DECLARE @SONUC TABLE
(
 ID      INT,
 SUTUN1  INT,
 SUTUN2  NVARCHAR(10),
 SUTUN3  INT,
 UNIQUE CLUSTERED (ID,SUTUN2)
)
 
DECLARE @KAYITSAT INT =(SELECT COUNT(*) FROM @TABLO)
DECLARE @SAY INT = 1
DECLARE @ID    INT
DECLARE @SAYI  INT
DECLARE @DEGER NVARCHAR(10)
DECLARE @ID_S    INT
DECLARE @SAYI_S  INT
DECLARE @DEGER_S NVARCHAR(10)
 
WHILE @SAY<=@KAYITSAT
BEGIN
       SELECT @ID=ID,@SAYI=SAYI,@DEGER=DEGER 
   FROM @TABLO
   WHERE ID = @SAY
   
   IF @ID=1
   BEGIN
        INSERT INTO @SONUC (ID,SUTUN1,SUTUN2,SUTUN3)
VALUES (@ID,@SAYI,@DEGER,1)
   END 
 
   IF @ID>1
   BEGIN
        SET @SAYI_S  =(SELECT SAYI FROM  @TABLO WHERE ID =@ID-1)
SET @DEGER_S =(SELECT DEGER FROM  @TABLO WHERE ID =@ID-1)
        
IF @DEGER=@DEGER_S AND @SAYI=@SAYI_S
BEGIN
     INSERT INTO @SONUC (ID,SUTUN1,SUTUN2,SUTUN3)
     VALUES (@ID,@SAYI,@DEGER,1)
END ELSE
BEGIN
     DECLARE @SONSAYI INT = (SELECT TOP 1 SUTUN3+1 FROM @SONUC WHERE ID<@ID AND SUTUN2 = @DEGER  ORDER BY SUTUN3 DESC)
     
IF @SONSAYI IS NULL 
BEGIN
     INSERT INTO @SONUC (ID,SUTUN1,SUTUN2,SUTUN3)
         VALUES (@ID,@SAYI,@DEGER,1)
                 END
                 ELSE BEGIN
     INSERT INTO @SONUC (ID,SUTUN1,SUTUN2,SUTUN3)
         VALUES (@ID,@SAYI,@DEGER,@SONSAYI)
 
END
SET @SONSAYI = 0
END
   END
SET @SAY = @SAY+1
END
 
 
SELECT *  FROM @SONUC 

 

 

 

 

 

 

Bu ileti 4 ay önce Vedat Özer tarafından düzenlendi

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
[email protected]

 
Gönderildi : 20/10/2023 11:19

(@ermanispir)
Gönderiler: 87
Estimable Member
Konu başlatıcı
 

usta merhaba,

sorguyu çalıştırınca oha demişim istemsiz.

tam istediğim şey.   büyük ustasın, Allah razı olsun.

 
Gönderildi : 20/10/2023 12:05

Paylaş: