sql

Tüm SQL veritabanları hakkında soru cevap için bu alanı kullanabilirsiniz.
Cevapla
akcanadana
Mesajlar: 12
Kayıt: Cum Haz 23, 2023 6:52 pm
Lokasyon: Adana
Meslek: İşletmeci
Adınız: Atila
Soyadınız: Ballıkaya

sql

Mesaj gönderen akcanadana »

Sql sorgusunda A ve B kolonları var. Her iki kolonda da 0 ve 0 dan büyük değerler var.
0 dan büyük satır sayısı hangi kolonda fazla ise o kolonu Order By Desc yapmak istiyorum.
tasad
Mesajlar: 31
Kayıt: Sal Ağu 01, 2023 2:07 pm
Meslek: Muhasebeci
Adınız: tarık
Soyadınız: sadık

Re: sql

Mesaj gönderen tasad »

Kolon isimlerini ve tablo adını kendinize göre değiştirin.

Kod: Tümünü seç

DECLARE @A INT,@B INT

SELECT @A=COUNT(A) FROM [AB] WHERE A>0
SELECT @B=COUNT(B) FROM [AB] WHERE B>0

IF @A<@B
BEGIN
SELECT A,B FROM [AB]  ORDER BY B DESC,A desc
END
ELSE
BEGIN
SELECT A,B FROM [AB]  ORDER BY A DESC,B desc
END
akcanadana
Mesajlar: 12
Kayıt: Cum Haz 23, 2023 6:52 pm
Lokasyon: Adana
Meslek: İşletmeci
Adınız: Atila
Soyadınız: Ballıkaya

Re: sql

Mesaj gönderen akcanadana »

Tarık ilgin için sağol
Benim sorgum zaten uzun bir sorgu
bu sorgunun 3 kez çalışması lazım.
Gereksiz şekilde zaman uzar.
Kısa sorgularda denenebilir. Farklı yöntem kullanmam gerekir.
tasad
Mesajlar: 31
Kayıt: Sal Ağu 01, 2023 2:07 pm
Meslek: Muhasebeci
Adınız: tarık
Soyadınız: sadık

Re: sql

Mesaj gönderen tasad »

Bu şekilde de kısa yöntemler geliştirebilirsiniz.

Kod: Tümünü seç

DECLARE @A INT,@B INT
SELECT @A=COUNT(A) FROM [AB] WHERE A>0 
SELECT @B=COUNT(B) FROM [AB] WHERE B>0

SELECT * FROM [AB] 
ORDER BY
CASE 
WHEN @A>@B THEN A ELSE B END DESC
akcanadana
Mesajlar: 12
Kayıt: Cum Haz 23, 2023 6:52 pm
Lokasyon: Adana
Meslek: İşletmeci
Adınız: Atila
Soyadınız: Ballıkaya

Re: sql

Mesaj gönderen akcanadana »

Tarık bu hiç bir şeyi değiştirmez sorgu yine 3 sefer çalışır.
tasad
Mesajlar: 31
Kayıt: Sal Ağu 01, 2023 2:07 pm
Meslek: Muhasebeci
Adınız: tarık
Soyadınız: sadık

Re: sql

Mesaj gönderen tasad »

Kod: Tümünü seç

SELECT *
FROM AB
ORDER BY 
    CASE 
        WHEN (SELECT COUNT(A) FROM AB WHERE A > 0) > (SELECT COUNT(B) FROM AB WHERE B > 0) THEN A 
        ELSE B 
    END DESC
Cevapla
  • Benzer Konular
    Cevaplar
    Görüntüleme
    Son mesaj