Forum

SQLDE BAKİYE SORUNU
 
Bildirimler
Hepsini Temizle

SQLDE BAKİYE SORUNU

6 Yazılar
5 Üyeler
0 Reactions
3,418 Görüntüleme
(@bluess_devils)
Gönderiler: 133
Estimable Member
Konu başlatıcı
 








Merhaba arkadaşlar;

Dış veri al ile sql veritabanına bağlanıp orada oluşturduğum sorguyu excele aktarmak istiyorum.Ama sql sorgusunu tamamlayamadım.

SELECT MAHSUP.HESAP, MAHSUP.BORC,MAHSUP.ALACAK, (BORC-ALACAK) AS 'BAKİYE'
FROM ETA_STOKGIRIS_2007.dbo.MAHSUP MAHSUP
WHERE (MAHSUP.HESAP='320.01.001')

YUKARIDAKİ SORGUDA 320.01.001 NOLU HESABIN BORÇ VE ALACAK SÜTUNLARINI ÇEKİYORUM.BAKİYE SÜTUNUNU OLUŞTURAMIYORUM.

HESAP        BORÇ ALACAK BAKİYE
320.01.001       10         0           10
320.01.001       45         0           55
320.01.001        0        40           15


YUKARIDAKİ GİBİ BAKİYESİNİ 15 GÖRMEK İÇİN NASIL BİR SORGU OLUŞTURMALIYIM.
cavanoos Çevrimiçi Kurallara Aykırı Mesajı Bildir  

 
Gönderildi : 08/04/2010 02:34

(@cozumpark)
Gönderiler: 16307
Illustrious Member Yönetici
 

Merhaba.


'BAKİYE' den ' işaretini kaldırırsanız sorununuz çözülür. BAKİYE ola


SELECT MAHSUP.HESAP, MAHSUP.BORC, MAHSUP.ALACAK, (BORC-ALACAK) AS BAKİYE
FROM ETA_STOKGIRIS_2007.dbo.MAHSUP MAHSUP
WHERE (MAHSUP.HESAP='320.01.001')


olacak yani.

 
Gönderildi : 08/04/2010 15:13

(@bluess_devils)
Gönderiler: 133
Estimable Member
Konu başlatıcı
 

Mert Bey;


 


O şekilde olamaz.Her satırda borçtan alacağı çıkarttığında borç ile alacağın farkını bulursun.Bakiyeyi değil.


 


 

 
Gönderildi : 08/04/2010 15:21

(@Anonim)
Gönderiler: 0
 

Yürüyen bakiyeyi bulmak için gerekli sorguda önceki kayıtlardaki toplamı bulabilmek için Unique Key'e ihtiyaç var.

Sizin sorgunuzda böyle bir alan olmadığı için MID adında bir alan olduğunu varsaydım.

Sizde Unique Key olarak hangi alan varsa MID yerine o alanı kullanmalısınız.

 

SELECT M.HESAP, M.BORC, M.ALACAK,
(SELECT SUM(BORC-ALACAK) FROM ETA_STOKGIRIS_2007.dbo.MAHSUP MAHSUP WHERE MID<=M.MID) AS BAKIYE
FROM ETA_STOKGIRIS_2007.dbo.MAHSUP AS M
WHERE M.HESAP='320.01.001'
ORDER BY M.MID

 ---

Aslında böyle bir sorguda sıralama için kullanılan en önemli alan Tarih alanıdır.

Yani Stok veya Cari Ekstresi alınırken, genelde Tarih alanına göre sıralama yapılır.

Tarih alanına göre sıralama kontrolü yapılmış olarak aşağıdaki sorguyu kullanabilirsiniz.

 

SELECT M.HESAP, M.TARIH, M.BORC, M.ALACAK,
(SELECT SUM(BORC-ALACAK) FROM ETA_STOKGIRIS_2007.dbo.MAHSUP MAHSUP WHERE (TARIH<M.TARIH) OR (TARIH=M.TARIH AND MID<=M.MID)) AS BAKIYE
FROM ETA_STOKGIRIS_2007.dbo.MAHSUP AS M
ORDER BY M.TARIH, M.MID
 

 
Gönderildi : 16/04/2010 04:09

(@MuhittinBOLAT)
Gönderiler: 5
Active Member
 

Kümülatif toplama işlemi CariID ye göre yapılacaksa nasıl olacak?

yani.. 

 

MusteriID SiparisGrupID         IslemTurAd          BORC           ALACAK      BAKİYE
3             20170929184004    Ürün Alındı           0.00           10.00          10.00
3              20170929184029   Ürün Alındı           0.00           10.00          20.00
3              20170929184057   Ürün Alındı           0.00           10.00          30.00
3              20170929184004   Para Verildi           10.00           0.00          20.00
3              20170930164825   Ürün Satıldı          10.00           0.00          10.00
5              20170930174109   Ürün Satıldı          100.00         0.00          -90.00

CariID değişmesine rağmen toplama çıkarma işlemine devam ediyor. Yazdığım sorgu kodu aşağıda..

SELECT M.MusteriID, M.SiparisGrupID, M.IslemTurAd, M.BORC, M.ALACAK,

(SELECT SUM(Alacak-Borc) FROM CariEkstreView MAHSUP WHERE MusteriID<=M.MusteriID and GenelEkstreID<=m.GenelEkstreID) AS BAKİYE
FROM CariEkstreView AS M
ORDER BY M.GenelEkstreID ,M.MusteriID

 
Gönderildi : 30/09/2017 21:11

(@marufarslan)
Gönderiler: 167
Reputable Member
 

Merhaba,

GROUP BY kullanıldığında sorun kalmaycak. 

"Dalgasız denizde, herkes kaptandır."

 
Gönderildi : 02/10/2017 12:40

Paylaş: