Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Hesap Planı Sorgusu
#1
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.


Ek Dosyalar
.xlsx   SORGU.xlsx (Dosya Boyutu: 10,81 KB / İndirme Sayısı: 39)
Cevapla
#2
(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
Cevapla
#3
İlginiz için çok teşekkürler. Benim istedim 3 tabloyu birleştirerek bir mizan oluşturmak. Yani,
100
100.01
100.01.001 şeklinde bir rapor oluşturmak.
Cevapla
#4
(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.
Cevapla
#5
@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ımSad
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
Cevapla
#6
(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ımSad
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
Cevapla
#7
eline sağlık abi süper olmuş.
Cevapla
#8
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.
Cevapla




Konuyu Okuyanlar: 1 Ziyaretçi