SQL ile çıktı formatı değişimi

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
sword
Üye
Mesajlar: 18
Kayıt: 31 Ara 2004 01:48

SQL ile çıktı formatı değişimi

Mesaj gönderen sword »

Tüm Arkadaşlara Selamlar...


SİCİL**AY***UCRET-
120658 OCAK 1250000000
125897 OCAK 950000000
..................... ......................... ......
...................................... ........

120658 SUBAT 1300000000
125897 SUBAT 1250000000
156897 SUBAT 85000000
.................................................
..................................................

gibi datalarımın olduğu bir database dosyam var..

Bunu SQL kullanarak çıktısını(gridde) aşağıdaki şekle nasıl getirebilirim??

**SICIL**OCAK*** SUBAT **** MART****.............
------------- --------- -------------------------------------
120658 125000000 1300000000 1289000000 ..........
125897 950000000 1250000000 1450000000 ..........
.... ...............................................................................
.... ..........................................................................

Not:Dosyam dbase formatında..


Herşey gönlünüzce olsun...
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Re: SQL İLE ÇIKTI FORMATI DEĞİŞİMİ

Mesaj gönderen naile »

Sanırım şu şekilde yapabilirsin:

Kod: Tümünü seç

SELECT SICIL
,(SELECT SUM(UCRET) FROM TABLO WHERE SICIL=T.SICIL AND AY='OCAK') AS OCAK
,(SELECT SUM(UCRET) FROM TABLO WHERE SICIL=T.SICIL AND AY='SUBAT') AS SUBAT
,(SELECT SUM(UCRET) FROM TABLO WHERE SICIL=T.SICIL AND AY='MART') AS MART
FROM TABLO T
GROUP BY SICIL
sword
Üye
Mesajlar: 18
Kayıt: 31 Ara 2004 01:48

Re: SQL İLE ÇIKTI FORMATI DEĞİŞİMİ

Mesaj gönderen sword »

naile yazdı:Sanırım şu şekilde yapabilirsin:

Kod: Tümünü seç

SELECT SICIL
,(SELECT SUM(UCRET) FROM TABLO WHERE SICIL=T.SICIL AND AY='OCAK') AS OCAK
,(SELECT SUM(UCRET) FROM TABLO WHERE SICIL=T.SICIL AND AY='SUBAT') AS SUBAT
,(SELECT SUM(UCRET) FROM TABLO WHERE SICIL=T.SICIL AND AY='MART') AS MART
FROM TABLO T
GROUP BY SICIL
Amacım Ücretleri toplatmak değil aylara karşılık gelen ücretleri yan yana sıralamak..
onaydin

Mesaj gönderen onaydin »

Yukardaki kodda zaten toplam almaktan ziyade yan yana dizer.
Yalnız where kısmına yıl ı da eklemek lazım.
sword
Üye
Mesajlar: 18
Kayıt: 31 Ara 2004 01:48

Mesaj gönderen sword »

onaydin yazdı:Yukardaki kodda zaten toplam almaktan ziyade yan yana dizer.
Yalnız where kısmına yıl ı da eklemek lazım.
Naile ve Onaydın arkadaşlarımızın yazdığı kod çalışmadı çalışıyor gibi görünüyor dakikalarca beklememe rağmen sonuç gelmiyor...
İnner joinle aşağıdaki şekilde çözdüm... bu kodu inner joinsiz yazma imkanı varmı??????

SELECT S1.SICIL,
S1.UCRET AS OCAK,
S2.UCRET AS SUBAT,
S3.UCRET AS MART,
FROM KAYIT S1
INNER JOIN KAYIT S2 ON(S1.SICIL=S2.SICIL)
INNER JOIN KAYIT S3 ON(S1.SICIL=S3.SICIL)
WHERE S1.AY='(01)OCAK' AND S2.AY='(02)SUBAT' AND
S3.AY='(03)MART'
AND S1.YIL='2004' AND S2.YIL='2004' AND S3.YIL='2004'
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

join'de kullandığınız alanlar indexli değilse, indexleyin. Bu yerine göre performansı 10-15 katına çıkartabilir.

Kolay gelsin.
Cevapla