Sorguda GARANTİ'si olup olmadığını öğrenme.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Ertuğrul2025
Üye
Mesajlar: 42
Kayıt: 08 Oca 2025 10:35

Sorguda GARANTİ'si olup olmadığını öğrenme.

Mesaj gönderen Ertuğrul2025 »

SQL Server 2012’de veri tabanım ve XE7 kullanıyorum. Benim yapmak istediğim kısaca şöyle. 2 Tane tablom var.
TABLO1 = YIL, SIRA, STOK, ADRES
TABLO2 = YIL, SIRA, STOK, SİPARİŞ_NU, GARANTI_BAS_TA
Aşağıdaki sorgu ile YIL. SIRA, STOK, ADRES, SIPARIS_NU, GARANTİ_SURE, GARANTI_BAS_TA, GARANTI_BITIS_TA sütunlarını oluşturuyorum.

SELECT
T1.YIL, T1.SIRA, T1.STOK, T1.ADRES, T2.SIPARIS_NU,
CASE
WHEN T2.SIPARIS_NU LIKE '%K%' THEN 365
WHEN T2.SIPARIS_NU LIKE '%M%' THEN 730
ELSE 0 END AS GARANTI_SURE,
T2.GARANTI_BAS_TA, DATEADD(DAY, CASE
WHEN T2.SIPARIS_NU LIKE '%K%' THEN 365
WHEN T2.SIPARIS_NU LIKE '%M%' THEN 730 ELSE 0
END,
T2.GARANTI_BAS_TA) AS GARANTI_BITIS_TA FROM TABLO1 T1 INNER JOIN
TABLO2 T2 ON T1.YIL = T2.YIL AND T1.SIRA = T2.SIRA

Benim yapmak istediğim bu sorguya ilave “GARANTISI” sütunu oluşturmak. Bu sütunu “GARANTI_BITIS_TA” dan bu gün ü çıkartsın
=>0 ise (GARANTİSİ DEVAN EDİYOR)
<0 ise (GARANTİSİ BİTTİ)
<>sütun boş ise (DAHA ÖNCE GELMEDİ) yazsın.
İlk sorguda ALUCARD hocam yardım etti gerisini ben yaparım zannettim ama çok uğraştım beceremedim.
Umarım bu konuda bana yardımcı olursunuz. Herkese hayırlı akşamlar.
Kullanıcı avatarı
Commandx
Üye
Mesajlar: 183
Kayıt: 01 Oca 2008 05:34

Re: Sorguda GARANTİ'si olup olmadığını öğrenme.

Mesaj gönderen Commandx »

Kod: Tümünü seç

SELECT
    T1.YIL, 
    T1.SIRA, 
    T1.STOK, 
    T1.ADRES, 
    T2.SIPARIS_NU,
    CASE
        WHEN T2.SIPARIS_NU LIKE '%K%' THEN 365
        WHEN T2.SIPARIS_NU LIKE '%M%' THEN 730
        ELSE 0 
    END AS GARANTI_SURE,
    T2.GARANTI_BAS_TA, 
    DATEADD(DAY, 
        CASE
            WHEN T2.SIPARIS_NU LIKE '%K%' THEN 365
            WHEN T2.SIPARIS_NU LIKE '%M%' THEN 730 
            ELSE 0
        END,
        T2.GARANTI_BAS_TA) AS GARANTI_BITIS_TA,
    CASE
        WHEN T2.GARANTI_BAS_TA IS NULL THEN 'DAHA ÖNCE GELMEDİ'
        WHEN DATEDIFF(DAY, GETDATE(), DATEADD(DAY, 
                CASE
                    WHEN T2.SIPARIS_NU LIKE '%K%' THEN 365
                    WHEN T2.SIPARIS_NU LIKE '%M%' THEN 730 
                    ELSE 0
                END,
                T2.GARANTI_BAS_TA)) >= 0 THEN 'GARANTİSİ DEVAM EDİYOR'
        ELSE 'GARANTİSİ BİTTİ'
    END AS GARANTISI
FROM 
    TABLO1 T1 
INNER JOIN
    TABLO2 T2 ON T1.YIL = T2.YIL AND T1.SIRA = T2.SIRA
http://www.delphibasics.co.uk/RTL.asp?Name=DaysBetween
http://www.neonhaber.com/Static/mega-co ... index.html
www.delphican.con
Function PARSE( text, ilk, son:String ): String; //
begin
Delete(Text, 1, pos(ilk, Text) + Length(ilk)-1);
Result := Copy(Text, 1, Pos(Son, Text)-1);
end;
Ertuğrul2025
Üye
Mesajlar: 42
Kayıt: 08 Oca 2025 10:35

Re: Sorguda GARANTİ'si olup olmadığını öğrenme.

Mesaj gönderen Ertuğrul2025 »

Commandx yazdı: 21 Nis 2025 10:27

Kod: Tümünü seç

SELECT
    T1.YIL, 
    T1.SIRA, 
    T1.STOK, 
    T1.ADRES, 
    T2.SIPARIS_NU,
    CASE
        WHEN T2.SIPARIS_NU LIKE '%K%' THEN 365
        WHEN T2.SIPARIS_NU LIKE '%M%' THEN 730
        ELSE 0 
    END AS GARANTI_SURE,
    T2.GARANTI_BAS_TA, 
    DATEADD(DAY, 
        CASE
            WHEN T2.SIPARIS_NU LIKE '%K%' THEN 365
            WHEN T2.SIPARIS_NU LIKE '%M%' THEN 730 
            ELSE 0
        END,
        T2.GARANTI_BAS_TA) AS GARANTI_BITIS_TA,
    CASE
        WHEN T2.GARANTI_BAS_TA IS NULL THEN 'DAHA ÖNCE GELMEDİ'
        WHEN DATEDIFF(DAY, GETDATE(), DATEADD(DAY, 
                CASE
                    WHEN T2.SIPARIS_NU LIKE '%K%' THEN 365
                    WHEN T2.SIPARIS_NU LIKE '%M%' THEN 730 
                    ELSE 0
                END,
                T2.GARANTI_BAS_TA)) >= 0 THEN 'GARANTİSİ DEVAM EDİYOR'
        ELSE 'GARANTİSİ BİTTİ'
    END AS GARANTISI
FROM 
    TABLO1 T1 
INNER JOIN
    TABLO2 T2 ON T1.YIL = T2.YIL AND T1.SIRA = T2.SIRA
Teşekkür ederim hocam Allah razı olsun.
Cevapla