İç içe karmaşık sorgu yapma.

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

İç içe karmaşık sorgu yapma.

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

Tablo ve Sütunlarım var. Bu tablolar ile tek bir sorguda;
1_ İki tabloda da YIL ve SIRA aynı olanları birleştirsin TABLO2 deki eşleşmeyenleri göstermesin.
2_ TABLO1 sütununda YIL ve SIRA sütununu birleştirsin NUMARA olarak başka satırda yazsın.
3_ Eşleşenlerin içinde TABLO2 deki SİPARİŞ_NU nun içinde “K” içeren siparişlere “365” gün. “M” içeren siparişlere “730” gün ve diğere harflere “0” olarak GARANTİ_SURE diye sütun açıp rakamları buraya yazsın.
4_ Yeni oluşturulan GARANTİ_SURE sütunu ile GARANTI_BAS_TA sütunlarını toplayıp GARANTI_BITIS_TA sütunu oluştursun.

Sorguda sütun dizini YIL. SIRA, STOK, ADRES, SIPARIS_NU, GARANTİ_SURE, GARANTI_BAS_TA, GARANTI_BITIS_TA olacak.

Biraz fazla oldu ama umarım bu konuda bana yardımcı olursunuz. Herkese hayırlı akşamlar.
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Re: İç içe karmaşık sorgu yapma.

Mesaj gönderen ALUCARD »

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
FROM 
    TABLO1 T1
INNER JOIN 
    TABLO2 T2 ON T1.YIL = T2.YIL AND T1.SIRA = T2.SIRA
Sanırım işini görür
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Ertuğrul2025
Üye
Mesajlar: 30
Kayıt: 08 Oca 2025 10:35

Re: İç içe karmaşık sorgu yapma.

Mesaj gönderen Ertuğrul2025 »

Ertuğrul2025 yazdı: 11 Nis 2025 08:33 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

Tablo ve Sütunlarım var. Bu tablolar ile tek bir sorguda;
1_ İki tabloda da YIL ve SIRA aynı olanları birleştirsin TABLO2 deki eşleşmeyenleri göstermesin.
2_ TABLO1 sütununda YIL ve SIRA sütununu birleştirsin NUMARA olarak başka satırda yazsın.
3_ Eşleşenlerin içinde TABLO2 deki SİPARİŞ_NU nun içinde “K” içeren siparişlere “365” gün. “M” içeren siparişlere “730” gün ve diğere harflere “0” olarak GARANTİ_SURE diye sütun açıp rakamları buraya yazsın.
4_ Yeni oluşturulan GARANTİ_SURE sütunu ile GARANTI_BAS_TA sütunlarını toplayıp GARANTI_BITIS_TA sütunu oluştursun.

Sorguda sütun dizini YIL. SIRA, STOK, ADRES, SIPARIS_NU, GARANTİ_SURE, GARANTI_BAS_TA, GARANTI_BITIS_TA olacak.

Biraz fazla oldu ama umarım bu konuda bana yardımcı olursunuz. Herkese hayırlı akşamlar.
GARANTI_BITIS_TA den Bu günün tarihini çıkartsın
Sonuç "=>0" ise "GARANTİSİ DEVAM EDİYOR"
Sonuç "<0" ise "GARANTİSİ BİTTİ"
ve GARANTI_BITIS_TA boş ise "GARANTİSİ BAŞLAMADI"
yazsın. Size zahmet bu konuda bana yardımcı olabilirmisiniz.
Cevapla