Satırları toplayarak giden sql cümleciği nasıl yazarım

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
haznedarli
Üye
Mesajlar: 122
Kayıt: 31 Tem 2010 06:38

Re: Satırları toplayarak giden sql cümleciği nasıl yazarım

Mesaj gönderen haznedarli »

aslangeri nin verdiğini denedim olmadı bende tekrar yazdım demekki yanlış bir işlem yapmıştım kusruma bakmayın genede.
1 aydır bununla uğraşıyorum çıldırmıştım artık :=)
emeği geçen herkese şimdiden teşekkür ederim..

sonuç okey başka arkadaşlarda vardı bunun çözümünü bulamayan onlarada bilgi olsun işlemi başarılı ve gayet hızlı bir şekilde gerçekleştiriyor.

senden bir sey daha istesem çokmu istemiş olurum ??

örnek te borç tan alacak çıkıyor bu adamın bakiye kısmının yanına o anki bakiyesi borç alacak diye yazılabilirmi peki ??

30/01/2010--------095729-------Fatura--------1555---------------0-----------1,555.00------borç
27/02/2010--------095801-------Fatura--------2152.5------------0-----------3,707.50------borç
16/03/2010--------2799095-----Çek-------------0-----------2541.24----------1.116,26------borç
20/03/2010--------095857------Fatura---------2953--------------0------------4,119.26------borç
07/04/2010--------405946------Çek-------------0---------------2500----------1,619.26------borç
07/04/2010--------405948------Çek-------------0---------------1700--------------80,74------alacak
07/04/2010--------405555------fatura---------2000-------------0--------------1,619.26------borç
En son haznedarli tarafından 14 Eyl 2010 05:28 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Re: Satırları toplayarak giden sql cümleciği nasıl yazarım

Mesaj gönderen Hakan Can »

Hocam, şöyle birşey olabilir:

Kod: Tümünü seç

SELECT
  CH.BLKODU,
  CH.TARIHI,
  CH.EVRAK_NO,
  CH.ACIKLAMA,
  CH.ISLEM_TURU,
  CH.ENTEGRASYON,
  CH.FATURA_DURUMU,
  CH.KPB_BTUT AS BORC,
  CH.KPB_ATUT AS ALACAK,
  (SELECT ABS(COALESCE(SUM(KPB_BTUT), 0) - COALESCE(SUM(KPB_ATUT), 0)) FROM CARIHR WHERE CARIHR.BLCRKODU = CH.BLCRKODU AND ((CARIHR.TARIHI < CH.TARIHI) OR (CARIHR.TARIHI = CH.TARIHI AND CARIHR.BLKODU <= CH.BLKODU))) AS BAKIYE,
  CASE WHEN (SELECT COALESCE(SUM(KPB_BTUT), 0) - COALESCE(SUM(KPB_ATUT), 0) FROM CARIHR WHERE CARIHR.BLCRKODU = CH.BLCRKODU AND ((CARIHR.TARIHI < CH.TARIHI) OR (CARIHR.TARIHI = CH.TARIHI AND CARIHR.BLKODU <= CH.BLKODU))) > 0 THEN 'Borç'
       WHEN (SELECT COALESCE(SUM(KPB_BTUT), 0) - COALESCE(SUM(KPB_ATUT), 0) FROM CARIHR WHERE CARIHR.BLCRKODU = CH.BLCRKODU AND ((CARIHR.TARIHI < CH.TARIHI) OR (CARIHR.TARIHI = CH.TARIHI AND CARIHR.BLKODU <= CH.BLKODU))) < 0 THEN 'Alacak' END AS BORC_ALACAK
FROM CARIHR CH
WHERE (CH.BLCRKODU = 149)
ORDER BY CH.TARIHI, CH.BLKODU
haznedarli
Üye
Mesajlar: 122
Kayıt: 31 Tem 2010 06:38

Re: Satırları toplayarak giden sql cümleciği nasıl yazarım

Mesaj gönderen haznedarli »

hocam öncelikle gönderdiğin kodlar çok hızlı bir şekilde çalıştı işlem sonucu dogru fakat anlamadıgım bir sorun var muhasebeprogramında en son tabloda sıra hatası var sitede cıktı yani ikisininde resimlerini yolluyorum üsttede bir sey var fakat en alt 3 lüde bir şey kayıp resimlere bakınca nedemek istediğimi anlıyacaksın.
anlatamadım çünki. şimdiden teşekkürler...
Dosya ekleri
Desktop2.rar
(169.6 KiB) 128 kere indirildi
haznedarli
Üye
Mesajlar: 122
Kayıt: 31 Tem 2010 06:38

Re: Satırları toplayarak giden sql cümleciği nasıl yazarım

Mesaj gönderen haznedarli »

hocam hatayı tek tek karşılaştırınca farkettim
resimdede var 20,05,2010---09026-- fatura----5000 olan yerde alacağa geçmesi lazım borç olarak görünüyor aşagıyada da son üçlüde o sorun oldugu için hatalı çıkıyor orası üstat..
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Re: Satırları toplayarak giden sql cümleciği nasıl yazarım

Mesaj gönderen Hakan Can »

Hocam, sorun var mı hala?
haznedarli
Üye
Mesajlar: 122
Kayıt: 31 Tem 2010 06:38

Re: Satırları toplayarak giden sql cümleciği nasıl yazarım

Mesaj gönderen haznedarli »

gönderdiğim resimlere bakınca anlıbilirsin anca ben anlatamıyorum nedemek istediğimi
muh muhprog.jpg ye bakınca özellikle 20,05,2010 096026 5000 fatura ya bak yanında çıkan rakama birde en elt 3 harekete bak orda 3000 küsürlük bir hareket olacak yukarda hata yaptıgı için aşasıda yanlış çıktı genel toplam doğru fakat adam bize borç lu iken çıktıda alacaklı görünüyor. iki resim arasında kıyaslama bakınca anlıyabilirsin sanırım. anlatamıyorum ben :=(
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Re: Satırları toplayarak giden sql cümleciği nasıl yazarım

Mesaj gönderen Hakan Can »

Hocam, aynı SQL'in farklı sonuç göstermemesi gerekir aynı şartlar altında. Sitede görünen sonuçta sıralama TARIH, BLKODU şeklinde değil (aynı tarihe sahip 4454, 4487'den sonra).

Source kod olmadan (en azından bu bölümlerin olduğu) yorum yapamayacağım.

Kolay gelsin.
haznedarli
Üye
Mesajlar: 122
Kayıt: 31 Tem 2010 06:38

Re: Satırları toplayarak giden sql cümleciği nasıl yazarım

Mesaj gönderen haznedarli »

şimdi üstat sorun değil aslında adam öyle anlasın bakınca bakiyesine sorun degil sonuçta bakiye aynen yürüyor.

muhasebe programında blkodu kısmı nasıl sa tam yerini söylüyorum.

20,05,2010----blkodu----4487----2410,74---alacak
20,05,2010----blkodu----4454----2589,26----borç

altta
28,07,2010----blkodu----6273----7816,00----alacak
28,07,2010----blkodu----6272----1310,00----alacak

burda nedense blkodu sıralı çıkması lazımken alacak olan bölüm borç tan önce cıkıyor . bu ayarlana bilirmi yoksa önemsemiyeyimmi ?
ben anlamadımsa başkası nasıl anlar onun merakındayım :( bilmiyorum anlatabildimmi.
herşey için teşekkürler....
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Re: Satırları toplayarak giden sql cümleciği nasıl yazarım

Mesaj gönderen Hakan Can »

Hocam kullandığın query componentinin belki de tanımlı indeksi vardır (IndexFieldNames, Index vs). Query sonunda onu kullanıyor olabilir.

Kolay gelsin.
haznedarli
Üye
Mesajlar: 122
Kayıt: 31 Tem 2010 06:38

Re: Satırları toplayarak giden sql cümleciği nasıl yazarım

Mesaj gönderen haznedarli »

hımm pek anlamadım bu işten genede çok teşekküler. yardımcı oldugun için..
mantıken adamlar nasıl yazdılar ama sanırım şu şekilde yazdılar bortan alacagı çıkart aynı tarihde ödeme varsa onu öne al blkoduna bakmadan ama ben onu yapamam yapamıyacagım için bu böyle kalır sanırım ..
haznedarli
Üye
Mesajlar: 122
Kayıt: 31 Tem 2010 06:38

Re: Satırları toplayarak giden sql cümleciği nasıl yazarım

Mesaj gönderen haznedarli »

SELECT
CH.BLKODU,
CH.TARIHI,
CH.EVRAK_NO,
CH.ACIKLAMA,
CH.ISLEM_TURU,
CH.ENTEGRASYON,
CH.FATURA_DURUMU,
CH.KPB_BTUT AS BORC,
CH.KPB_ATUT AS ALACAK,
(SELECT ABS(COALESCE(SUM(KPB_BTUT), 0) - COALESCE(SUM(KPB_ATUT), 0)) FROM CARIHR WHERE CARIHR.BLCRKODU = CH.BLCRKODU AND ((CARIHR.TARIHI < CH.TARIHI) OR (CARIHR.TARIHI = CH.TARIHI AND CARIHR.BLKODU <= CH.BLKODU))) AS BAKIYE,
CASE WHEN (SELECT COALESCE(SUM(KPB_BTUT), 0) - COALESCE(SUM(KPB_ATUT), 0) FROM CARIHR WHERE CARIHR.BLCRKODU = CH.BLCRKODU AND ((CARIHR.TARIHI < CH.TARIHI) OR (CARIHR.TARIHI = CH.TARIHI AND CARIHR.BLKODU <= CH.BLKODU))) > 0 THEN 'Borç'
WHEN (SELECT COALESCE(SUM(KPB_BTUT), 0) - COALESCE(SUM(KPB_ATUT), 0) FROM CARIHR WHERE CARIHR.BLCRKODU = CH.BLCRKODU AND ((CARIHR.TARIHI < CH.TARIHI) OR (CARIHR.TARIHI = CH.TARIHI AND CARIHR.BLKODU <= CH.BLKODU))) < 0 THEN 'Alacak' END AS BORC_ALACAK
FROM CARIHR CH
WHERE (CH.BLCRKODU = 149)
ORDER BY CH.TARIHI, CH.BLKODU


kardeş kodlar bunlar hatırlatma olsun diye yazdım bu kullanıcının borcu varsa borç alacagı varsa alacak yazdı mesele yok ama adam borcunu kapattı alacak verecek yok sıfır yazan bir yer ekleme şanşın varmı ??

WHEN (SELECT COALESCE(SUM(KPB_BTUT), 0) - COALESCE(SUM(KPB_ATUT), 0) FROM CARIHR WHERE CARIHR.BLCRKODU = CH.BLCRKODU AND ((CARIHR.TARIHI < CH.TARIHI) OR (CARIHR.TARIHI = CH.TARIHI AND CARIHR.BLKODU <= CH.BLKODU))) > 0 THEN 'sıfır'

= 0 yaptım olmadı = olmadı 0 olmadı ??? yardım edebilirmisin..

şimdiden teşekkürler

kolay gelsin..
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Re: Satırları toplayarak giden sql cümleciği nasıl yazarım

Mesaj gönderen Hakan Can »

Hocam şöyle olabilir:

Kod: Tümünü seç

SELECT
CH.BLKODU,
CH.TARIHI,
CH.EVRAK_NO,
CH.ACIKLAMA,
CH.ISLEM_TURU,
CH.ENTEGRASYON,
CH.FATURA_DURUMU,
CH.KPB_BTUT AS BORC,
CH.KPB_ATUT AS ALACAK,
(SELECT ABS(COALESCE(SUM(KPB_BTUT), 0) - COALESCE(SUM(KPB_ATUT), 0)) FROM CARIHR WHERE CARIHR.BLCRKODU = CH.BLCRKODU AND ((CARIHR.TARIHI < CH.TARIHI) OR (CARIHR.TARIHI = CH.TARIHI AND CARIHR.BLKODU <= CH.BLKODU))) AS BAKIYE,
CASE WHEN (SELECT COALESCE(SUM(KPB_BTUT), 0) - COALESCE(SUM(KPB_ATUT), 0) FROM CARIHR WHERE CARIHR.BLCRKODU = CH.BLCRKODU AND ((CARIHR.TARIHI < CH.TARIHI) OR (CARIHR.TARIHI = CH.TARIHI AND CARIHR.BLKODU <= CH.BLKODU))) > 0 THEN 'Borç'
WHEN (SELECT COALESCE(SUM(KPB_BTUT), 0) - COALESCE(SUM(KPB_ATUT), 0) FROM CARIHR WHERE CARIHR.BLCRKODU = CH.BLCRKODU AND ((CARIHR.TARIHI < CH.TARIHI) OR (CARIHR.TARIHI = CH.TARIHI AND CARIHR.BLKODU <= CH.BLKODU))) < 0 THEN 'Alacak' ELSE 'Sıfır' END AS BORC_ALACAK
FROM CARIHR CH
WHERE (CH.BLCRKODU = 149)
ORDER BY CH.TARIHI, CH.BLKODU
Kolay gelsin.
haznedarli
Üye
Mesajlar: 122
Kayıt: 31 Tem 2010 06:38

Re: Satırları toplayarak giden sql cümleciği nasıl yazarım

Mesaj gönderen haznedarli »

Microsoft VBScript runtime (0x800A005E)
Invalid use of Null: 'Replace' google amcam çeviride şunu dedi ((Boş ve geçersiz kullanın: 'Değiştir'))
/kontrol_siparislerim.asp, line 56

bunu veriyor hocam

önceden yapmaya çalıştıklarımdada bı hatayı verdi.

teşekkürler.
haznedarli
Üye
Mesajlar: 122
Kayıt: 31 Tem 2010 06:38

Re: Satırları toplayarak giden sql cümleciği nasıl yazarım

Mesaj gönderen haznedarli »

hocam sıfır ı nasıl yazdıracagız bir fikrin varmı ??
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Re: Satırları toplayarak giden sql cümleciği nasıl yazarım

Mesaj gönderen Hakan Can »

Hocam CASE WHEN .. WHEN .. ELSE .. END şeklinde kullanılıyor. Önceki SQL scriptinin sonuna ".. < 0 THEN 'Alacak' ELSE 'Sıfır' END AS BORC_ALACAK" diye ilave etmiştim.

Hata burada değil muhtemelen. Hata olan SQL scriptini tam verebilirsen belki nedenini anlayabiliriz.

Kolay gelsin.
Cevapla