Sayfayı Yazdır | Pencereyi Kapat

bu kod daha kisa yazilamaz mi

Nereden Yazdırıldığı: ERP Nedir? | Türkiye'nin ERP Forum Platformu
Kategori: SQL
Forum Adı: SQL Veri Tabanı İşlemleri
Forum Tanımlaması: Table,View,Trigger,SELECT,UPDATE,INSERT...
URL: http://www.erpne.org/forum_posts.asp?TID=1440
Tarih: 19 Nisan 2025 Saat 17:54
Program Versiyonu: Web Wiz Forums 11.10 - http://www.webwizforums.com


Konu: bu kod daha kisa yazilamaz mi
Mesajı Yazan: sadettincetin
Konu: bu kod daha kisa yazilamaz mi
Mesaj Tarihi: 21 Şubat 2009 Saat 11:26

söyle bir rapor lazim oldu: tüm kasa kodlari itibariyle önceki günden devir,günlük giris,günlük çikis ve gün sonu bakiyelerini çeken bir sorgu yazmaya çalistim.

 
ancak sorgu destan gibi uzadi.
 
bu sorgu daha kisa nasil yazilabilir.
 
fikri ve elestirisi olan arkadaslardan mesaj bekliyorum.
 
sorgu söyle
 
select ksmas_kod,ksmas_name
,--dünden devreden
(select isnull(sum(tutar),0)from
(select '' hartip ,x.ksmas_kod kod,doviz=(select dovizli from tblkasamas where ksmas_kod=x.ksmas_kod),tarih
,isnull(case when (select dovizli from tblkasamas where ksmas_kod=x.ksmas_kod)='H' then tutar else doviztut end,0) tutar,IO gc
,(select doviztipi from tblkasamas where ksmas_kod=x.ksmas_kod) dovtip
from tblkasa x  union all
select  'D' hartip ,ksmas_kod kod,dovizli doviz,'' tarih,case dovizli when 'H' then kssondev_t else kssondev_doviz end tutar,'G' gc,doviztipi dovtip from tblkasamas
) kasa  where tarih < '02.21.2009' and kod=t.ksmas_kod and gc='G')
-
(select isnull(sum(tutar),0)from
(select '' hartip ,x.ksmas_kod kod,doviz=(select dovizli from tblkasamas where ksmas_kod=x.ksmas_kod),tarih
,isnull(case when (select dovizli from tblkasamas where ksmas_kod=x.ksmas_kod)='H' then tutar else doviztut end,0) tutar,IO gc
,(select doviztipi from tblkasamas where ksmas_kod=x.ksmas_kod) dovtip
from tblkasa x  union all
select  'D' hartip ,ksmas_kod kod,dovizli doviz,'' tarih,case dovizli when 'H' then kssondev_t else kssondev_doviz end tutar,'G' gc,doviztipi dovtip from tblkasamas
) kasa  where tarih < '02.21.2009' and kod=t.ksmas_kod and gc='C') devir
,--bugün giren
(select isnull(sum(tutar),0) from
(select '' hartip ,x.ksmas_kod kod,doviz=(select dovizli from tblkasamas where ksmas_kod=x.ksmas_kod),tarih
,isnull(case when (select dovizli from tblkasamas where ksmas_kod=x.ksmas_kod)='H' then tutar else doviztut end,0) tutar,IO gc
,(select doviztipi from tblkasamas where ksmas_kod=x.ksmas_kod) dovtip
from tblkasa x  union all
select  'D' hartip ,ksmas_kod kod,dovizli doviz,'' tarih,case dovizli when 'H' then kssondev_t else kssondev_doviz end tutar,'G' gc,doviztipi dovtip from tblkasamas
) kasa  where tarih = '02.21.2009' and kod=t.ksmas_kod and gc='G' ) ggiris
,--bugün çikan
(select isnull(sum(tutar),0) from
(select '' hartip ,x.ksmas_kod kod,doviz=(select dovizli from tblkasamas where ksmas_kod=x.ksmas_kod),tarih
,isnull(case when (select dovizli from tblkasamas where ksmas_kod=x.ksmas_kod)='H' then tutar else doviztut end,0) tutar,IO gc
,(select doviztipi from tblkasamas where ksmas_kod=x.ksmas_kod) dovtip
from tblkasa x  union all
select  'D' hartip ,ksmas_kod kod,dovizli doviz,'' tarih,case dovizli when 'H' then kssondev_t else kssondev_doviz end tutar,'G' gc,doviztipi dovtip from tblkasamas
) kasa  where tarih = '02.21.2009' and kod=t.ksmas_kod and gc='C' ) gcikis
,--kalan
(select isnull(sum(tutar),0) from
(select '' hartip ,x.ksmas_kod kod,doviz=(select dovizli from tblkasamas where ksmas_kod=x.ksmas_kod),tarih
,isnull(case when (select dovizli from tblkasamas where ksmas_kod=x.ksmas_kod)='H' then tutar else doviztut end,0) tutar,IO gc
,(select doviztipi from tblkasamas where ksmas_kod=x.ksmas_kod) dovtip
from tblkasa x  union all
select  'D' hartip ,ksmas_kod kod,dovizli doviz,'' tarih,case dovizli when 'H' then kssondev_t else kssondev_doviz end tutar,'G' gc,doviztipi dovtip from tblkasamas
) kasa  where tarih <= '02.21.2009' and kod=t.ksmas_kod and gc='G' )
 -
 (select isnull(sum(tutar),0) from
(select '' hartip ,x.ksmas_kod kod,doviz=(select dovizli from tblkasamas where ksmas_kod=x.ksmas_kod),tarih
,isnull(case when (select dovizli from tblkasamas where ksmas_kod=x.ksmas_kod)='H' then tutar else doviztut end,0) tutar,IO gc
,(select doviztipi from tblkasamas where ksmas_kod=x.ksmas_kod) dovtip
from tblkasa x  union all
select  'D' hartip ,ksmas_kod kod,dovizli doviz,'' tarih,case dovizli when 'H' then kssondev_t else kssondev_doviz end tutar,'G' gc,doviztipi dovtip from tblkasamas
) kasa  where tarih <= '02.21.2009' and kod=t.ksmas_kod and gc='C' ) kalan
,case doviztipi when 0 then (select yedek6 from TBLPARAM where SUBE_KODU=0) else (select ISIM  from NETSIS..kur where SIRA=t.doviztipi) end dtip
from tblkasamas t
 



Cevaplar:
Mesajı Yazan: Conari
Mesaj Tarihi: 23 Şubat 2009 Saat 12:08
yerlesik viewlerden yola çikarsaniz is ve rapor daha basitlesir.
 
KASALISTE viewine istidigin önceki bakiye ve toplami ekleyebilirsin.
 
bir de bazi seyler için fonksiyon tanimlayiniz mesela;
(select ISIM  from NETSIS..kur where SIRA=t.doviztipi) bunun için bir fonksiyon yazip
kullanirken
 
dbo.DOVISIM(t.doviztipi)) Olarak kullanabilirsiniz.


-------------
Netsisden vazgeçemiyorum. Beni engelliyor..


Mesajı Yazan: sadettincetin
Mesaj Tarihi: 23 Şubat 2009 Saat 12:24
YERLESIK VIEW LERI KULLANMAK IÇIN OTURUM AÇMAK GEREKIYOR.
BIR ÇOK FIRMA KASA MODÜLÜNDE YENI GÜNE DEVIR YAPMIYOR.
BU KODU WEB TABANLI RAPORLAMA PROGRAMIMDA KULLANDIM.
AMACIM MEVCUT DATABASE DE HIÇ BIR DEGISIKLIK VEYA ILAVE YAPMADAN PROGRAMIN ÇALISMASI.
PROGRAM SADECE RAPORLAMA AMAÇLI OLDUGU IÇIN SQL DE OLUSTURULAN KULLANICININ READER YETKISI OLMASI YETERLI.
 
 
http://www.erpne.org/forum_posts.asp?TID=1270&get=last#8102 - http://www.erpne.org/forum_posts.asp?TID=1270&get=last#8102  
 
BU LINKTE DÜN EKLEDIGIM PROGRAM VAR.


Mesajı Yazan: Conari
Mesaj Tarihi: 23 Şubat 2009 Saat 12:32
Selam, Programina kisaca bakmistim.simdi dosya eklemissin onada bakayim görmemistim.
 
exec nsp_netsesguncelle 2, 'ys0001',1,0,'e','h','2',-1,'H',0,0,'H'
 
bu kod ile oturum açabilirsiniz.


-------------
Netsisden vazgeçemiyorum. Beni engelliyor..


Mesajı Yazan: mbaykan
Mesaj Tarihi: 24 Şubat 2009 Saat 13:31
Asagidaki prosedürü olusturup,
CREATE PROCEDURE MSP_KASAOZET (@TARIH VARCHAR(12)) AS
BEGIN
DECLARE @KMT VARCHAR(2000)
SET @KMT=
'SELECT AA.KSMAS_KOD,AA.KSMAS_NAME,AA.DOVIZTIPI,SUM(DEVIR) DEVIR,SUM(GIRIS) GIRIS,SUM(CIKIS) CIKIS,SUM(DEVIR)+SUM(GIRIS)-SUM(CIKIS) KALAN FROM
(select a.KSMAS_KOD,b.KSMAS_NAME,B.DOVIZTIPI,
SUM(case when IO=''G'' THEN CASE WHEN DOVIZTIPI=0 THEN TUTAR ELSE DOVIZTUT END ELSE CASE WHEN DOVIZTIPI=0 THEN -TUTAR ELSE -DOVIZTUT END END) DEVIR,
0 GIRIS,0 CIKIS
--,0 KALAN
from tblkasa a (nolock),tblkasamas b(nolock)
where a.KSMAS_KOD=b.KSMAS_KOD AND TARIH<'''+@TARIH+'''
GROUP BY a.KSMAS_KOD,b.KSMAS_NAME,B.DOVIZTIPI
UNION ALL
select a.KSMAS_KOD,b.KSMAS_NAME,B.DOVIZTIPI,
0,
SUM(case when IO=''G'' THEN CASE WHEN DOVIZTIPI=0 THEN TUTAR ELSE DOVIZTUT END ELSE 0 END),
SUM(case when IO=''C'' THEN CASE WHEN DOVIZTIPI=0 THEN TUTAR ELSE DOVIZTUT END ELSE 0 END)
--SUM(case when IO=''G'' THEN CASE WHEN DOVIZTIPI=0 THEN TUTAR ELSE DOVIZTUT END ELSE CASE WHEN DOVIZTIPI=0 THEN -TUTAR ELSE -DOVIZTUT END END)

from tblkasa a (nolock),tblkasamas b(nolock)
where a.KSMAS_KOD=b.KSMAS_KOD AND TARIH='''+@TARIH+'''
GROUP BY a.KSMAS_KOD,b.KSMAS_NAME,B.DOVIZTIPI) AA
GROUP BY AA.KSMAS_KOD,AA.KSMAS_NAME,AA.DOVIZTIPI'
--PRINT @KMT
EXEC(@KMT)
END
EXEC MSP_KASAOZET '2009-02-11'
Seklinde çalistirirsaniz sonuç verir.
kolay gelsin

-------------
Mehmet Baykan


Mesajı Yazan: Conari
Mesaj Tarihi: 24 Şubat 2009 Saat 14:37
Selam, arkadastan önce ben baktim gelen bilgiler detaysiz arkadas detayli istiyor sanirim birde devirlere devir yerine kasabakiye-devir tutarini getirtmissiniz.
 
Yanlis degerlendirdi isem pardon.


-------------
Netsisden vazgeçemiyorum. Beni engelliyor..


Mesajı Yazan: mbaykan
Mesaj Tarihi: 25 Şubat 2009 Saat 11:19
ilk mesajimda kod'da hata vardi KALAN dogru hesaplanmiyordu. ayni mesaji düzelttim, soruyu soran da özet bir rapor istegini söylemis. Ama mevcut prosedür degistirilerek (yani 2 adet select'e -biri devir için GROUP BY'li, digeri grupsuz- detay raporu da listeleneblir.
tabi istenen sütunlari da ilave etmek gerek açiklama v.s. gibi
kolay gelsin


-------------
Mehmet Baykan



Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 11.10 - http://www.webwizforums.com
Copyright ©2001-2017 Web Wiz Ltd. - https://www.webwiz.net