Sütuna Göre Listeleme

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Sütuna Göre Listeleme

Mesaj gönderen pro_imaj »

Merhaba,

Kod: Tümünü seç

SELECT DISTINCT STI.Tarih, STI.MalKodu, STK.MalAdi, CHK.Unvan1, STI.Miktar
FROM SOLAR4.FINSAT460.CHK CHK, SOLAR4.FINSAT460.STI STI, SOLAR4.FINSAT460.STK STK
WHERE STK.MalKodu = STI.MalKodu AND STI.Chk = CHK.HesapKodu AND ((STI.IslemTur=1))
GROUP BY STI.Tarih, STI.MalKodu, STK.MalAdi, CHK.Unvan1, STI.Miktar
Yukarıdaki kod ile aşağıdaki sonuca ulaşıyorum.

Kod: Tümünü seç

Tarih	         MalKodu      MalAdi       Unvan1	Miktar
26.05.2005         ML500         Filitre        BMV               120
26.05.2005         ML500         Filitre        RENOULT        100
Yapmak İstediğim
Tarih
26.05.2005

Kod: Tümünü seç

MalKodu	BMV		RENOULT
ML500	120		100

Yukarıdaki değerler sabit diil yani yukarıda BMV ve RENOULT var ama bu onlarca olabiliyor. Veri tabanında yüzlerce girilebiliyor. Benim bunu SQL ile yapmam mümkünmü acaba.

Saygılarımla.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Satırları belirsiz sayıda sütün olarak direk SQL komutu ile döndüremezsiniz.
Bu problemi ancak kod yazarak çözebilirsiniz.

İyi çalışmalar.
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Sabit olmadığı için ancak bir döngü ile sql oluşturarak yapabilirisn. Yani mesela yukardaki bmw, reno v.b. bilgilerinin tutulduğu tablo olsun Unvan diye. Önce burdan bir sorgu çalıştır:

Kod: Tümünü seç

var
SQLText: string;
begin
  Query1.Close;
  Query1.SQL.Text := 'SELECT UnvanKodu FROM Unvan';
  Query1.Close;

   while not(Query1.Eof)
   begin
    SQLText :=  SQLText + ',' +'(Select Miktar FROM Tablom WHere Unvan='+Query1.Fields[0].AsString+')';
    Query1.Next;
  end;

  // sonra bu sqltext senin sqline ekleyeceksin
end;
Tam bu şekil çalışmaz biraz değişiklik yapman gerekebilir ama mantığı anlamışsındır umarım. Yani, iç select kullanacaksın ama bunu döngü ile oluşturup sqline ekleyeceksin.
Cevapla