Merhabalar,
Genel muhasebede kullanılan tekdüzen hesap planı tarzında bir sorgu yapmaya çalışıyoruz ama yapamadık. bu konuda yardımcı olabilecek ustalarımızdan yardımlarını rica ederim ekteki dosyada ayrıntılı olarak açıkladım. Şimdiden yardımlarınız için teşekkürler.
(07-02-2023, Saat: 13:36)umit1907 Adlı Kullanıcıdan Alıntı: Merhabalar,
Genel muhasebede kullanılan tekdüzen hesap planı tarzında bir sorgu yapmaya çalışıyoruz ama yapamadık. bu konuda yardımcı olabilecek ustalarımızdan yardımlarını rica ederim ekteki dosyada ayrıntılı olarak açıkladım. Şimdiden yardımlarınız için teşekkürler.
Merhabalar ,
öncelikle tavsiyem bir mizan tablosu oluşturmanız ve bu hesaplar da işlem yaparken kullanılan hesapların ana hesaplarını bularak mizan tablosuna kaydetmeniz daha hızlı ve ulaşılabilir bir yöntem olur
diğer türlü
Hesap_No Hesap_Adi Alacak Borc
100.02.001 Ana Kasa Tl 102.00 0.00
135.02.001 Personelden Alacaklar 150.00 0.00
120.02.001 Alıcılar 0.00 150.00
150.02.001 İlk Madde Ve Malzeme 150.00 0.00
102.02.001 Bankalar 250.00 0.00
100.02.001 Ana Kasa Tl 123.00 0.00
100.02.003 kasa usd NULL 999.00
100.02.003 kasa usd NULL 500.00
bu tarz bir tablodan çekmek için sum yöntemi kullanmalısın
Select
( select sum(Borc) from tablo where Hesap_No = '100.02.001' ) EnAltHesapBorc ,
( select sum(Alacak) from tablo where Hesap_No = '100.02.001' ) EnAltHesapAlacak,
( select sum(Borc) from tablo where Hesap_No like '100.02%' ) AltHesapBorc ,
( select sum(alacak) from tablo where Hesap_No like '100.02%' ) AltHesapAlacak ,
( select sum(Borc) from tablo where Hesap_No = '100%' ) HesapBorc ,
( select sum(alacak) from tablo where Hesap_No = '100%' ) HesapAlacak
ana mantık bu (Bu arada mysql de farklılık olabilir genelde mssql kullanıyorum)
bu sorguyu ana hesaplarında dönüp onlara bağlı olan hesaplarda geliştirebilirsin
umarım bir fikir vermiştir
Bu arada NULL alan kullanmamalısın ya sıfır gelmeli yada ISNULL kullanmalısın değilse toplamlar gelmez
(07-02-2023, Saat: 13:36)umit1907 Adlı Kullanıcıdan Alıntı: Merhabalar,
Genel muhasebede kullanılan tekdüzen hesap planı tarzında bir sorgu yapmaya çalışıyoruz ama yapamadık. bu konuda yardımcı olabilecek ustalarımızdan yardımlarını rica ederim ekteki dosyada ayrıntılı olarak açıkladım. Şimdiden yardımlarınız için teşekkürler.
Merhabalar,
Bu şekilde yapmanın birden fazla yolu var.
Size vereceğim örnek Ms Sql için en rahat kullanım şekli bu olacaktır.
select * from
(
select substring(Hesap_No,1,3) as Hesap_no,sum(Borc) as Borc,sum(Alacak) as Alacak from mahsup_detay
group by substring(Hesap_No,1,3)
union all
select substring(Hesap_No,1,6) as Hesap_no,sum(Borc) as Borc,sum(Alacak) as Alacak from mahsup_detay
group by substring(Hesap_No,1,6)
union all
select Hesap_No,sum(Borc) as Borc,sum(Alacak) as Alacak from mahsup_detay
group by Hesap_No ) as a
order by a.Hesap_no
diğer tablolar ile bağlayıp hesap isimlerini yanına alabilirsiniz.
@yasard çok teşekkürler elinize sağlık. İstemiş olduğum raporu oluşturabilir sadece diğer tabloları bağlayıp hesap isimlerini alamadım https://i.hizliresim.com/6zar6nq.jpg
select * from
(
select substring(Hesap_No,1,3) as Hesap_no,
sum(Borc) as Borc,sum(Alacak) as Alacak,
sum(Borc)-sum(Alacak) as Bakiye,
sum(Dvz_Borc) as Doviz_Borc, sum(Dvz_Alacak) as Doviz_Alacak,
sum(Dvz_Borc)-sum(Dvz_Alacak) as Doviz_Bakiye,
Kurum_Kodu
from mahsup_detay
group by substring(Hesap_No,1,3)
union all
select substring(Hesap_No,1,6) as Hesap_no,sum(Borc) as Borc,sum(Alacak) as Alacak,
sum(Borc)-sum(Alacak) as Bakiye,
sum(Dvz_Borc) as Doviz_Borc, sum(Dvz_Alacak) as Doviz_Alacak,
sum(Dvz_Borc)-sum(Dvz_Alacak) as Doviz_Bakiye,
Kurum_Kodu
from mahsup_detay
group by substring(Hesap_No,1,6)
union all
select Hesap_No,sum(Borc) as Borc,sum(Alacak) as Alacak,
sum(Borc)-sum(Alacak) as Bakiye,
sum(Dvz_Borc) as Doviz_Borc, sum(Dvz_Alacak) as Doviz_Alacak,
sum(Dvz_Borc)-sum(Dvz_Alacak) as Doviz_Bakiye,
Kurum_Kodu
from mahsup_detay
(12-02-2023, Saat: 17:51)umit1907 Adlı Kullanıcıdan Alıntı: @yasard çok teşekkürler elinize sağlık. İstemiş olduğum raporu oluşturabilir sadece diğer tabloları bağlayıp hesap isimlerini alamadım https://i.hizliresim.com/6zar6nq.jpg
select * from
(
select substring(Hesap_No,1,3) as Hesap_no,
sum(Borc) as Borc,sum(Alacak) as Alacak,
sum(Borc)-sum(Alacak) as Bakiye,
sum(Dvz_Borc) as Doviz_Borc, sum(Dvz_Alacak) as Doviz_Alacak,
sum(Dvz_Borc)-sum(Dvz_Alacak) as Doviz_Bakiye,
Kurum_Kodu
from mahsup_detay
group by substring(Hesap_No,1,3)
union all
select substring(Hesap_No,1,6) as Hesap_no,sum(Borc) as Borc,sum(Alacak) as Alacak,
sum(Borc)-sum(Alacak) as Bakiye,
sum(Dvz_Borc) as Doviz_Borc, sum(Dvz_Alacak) as Doviz_Alacak,
sum(Dvz_Borc)-sum(Dvz_Alacak) as Doviz_Bakiye,
Kurum_Kodu
from mahsup_detay
group by substring(Hesap_No,1,6)
union all
select Hesap_No,sum(Borc) as Borc,sum(Alacak) as Alacak,
sum(Borc)-sum(Alacak) as Bakiye,
sum(Dvz_Borc) as Doviz_Borc, sum(Dvz_Alacak) as Doviz_Alacak,
sum(Dvz_Borc)-sum(Dvz_Alacak) as Doviz_Bakiye,
Kurum_Kodu
from mahsup_detay
group by Hesap_No ) as a
order by a.Hesap_no
Selamlar,
Öncelikle Kurum_kod alanını da group by eklemen lazım.
Hesap adları için ise alttaki şekilde işini görmesi gerekir.
Eğer sql versiyon eski ise "COALESCE" yerine "case when" yada "isnull" gibi birşey kullanarak hesap adlarını alabilirsin.
select a.Hesap_no,COALESCE(anh.Hesap_Adi,alth.Hesap_Adi,'') as Hesap_Ad,a.Borc,a.Alacak,a.Bakiye,a.Doviz_Borc,a.Doviz_Alacak,a.Doviz_Bakiye,a.Kurum_kodu from
(
select substring(Hesap_No,1,3) as Hesap_no,
sum(Borc) as Borc,sum(Alacak) as Alacak,
sum(Borc)-sum(Alacak) as Bakiye,
sum(Dvz_Borc) as Doviz_Borc, sum(Dvz_Alacak) as Doviz_Alacak,
sum(Dvz_Borc)-sum(Dvz_Alacak) as Doviz_Bakiye,Kurum_Kodu
from mahsup_detay
group by substring(Hesap_No,1,3),Kurum_Kodu
union all
select substring(Hesap_No,1,6) as Hesap_no,sum(Borc) as Borc,sum(Alacak) as Alacak,
sum(Borc)-sum(Alacak) as Bakiye,
sum(Dvz_Borc) as Doviz_Borc, sum(Dvz_Alacak) as Doviz_Alacak,
sum(Dvz_Borc)-sum(Dvz_Alacak) as Doviz_Bakiye,Kurum_Kodu
from mahsup_detay
group by substring(Hesap_No,1,6),Kurum_Kodu
union all
select Hesap_No,sum(Borc) as Borc,sum(Alacak) as Alacak,
sum(Borc)-sum(Alacak) as Bakiye,
sum(Dvz_Borc) as Doviz_Borc, sum(Dvz_Alacak) as Doviz_Alacak,
sum(Dvz_Borc)-sum(Dvz_Alacak) as Doviz_Bakiye,Kurum_Kodu
from mahsup_detay
group by Hesap_No,Kurum_Kodu ) as a
left outer join ana_hesap anh on a.Hesap_no=anh.Ana_Hesap_kodu
left outer join alt_hesap alth on a.Hesap_no=alth.Alt_Hesap_kodu
order by a.Hesap_no
elinize sağlık gerçekten
isterseniz hesap planına yeni bir hesap eklerken alt hesap sayısı ve üst hesap bilgisini de eklerseniz ilişkisel yapının bozulmamasını ve raporlamasını kolay yaparsınız.