Çift tarih aralikli "stok cari analiz"
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=2506
Tarih: 22 Ağustos 2025 Saat 12:16 Program Versiyonu: Web Wiz Forums 11.10 - http://www.webwizforums.com
Konu: Çift tarih aralikli "stok cari analiz"
Mesajı Yazan: srdkrtd
Konu: Çift tarih aralikli "stok cari analiz"
Mesaj Tarihi: 11 Mart 2011 Saat 10:04
Arkadaslar merhaba,
Ben tek raporda ayni dönem içerisindeki iki farkli tarih araliginin raporunu almak istiyorum.
Örn.: Ocak ayinin ilk haftasi ile Subat ayinin ilk haftasini plasiyer bazinda cari kod kümülatif toplamli stok satis miktarlarini.. (Alkollü içki satan plasiyer ölçü birimi galon)
Cari Kod Cari Isim Sat.Mik.3 Br.3 Sat.Mik.3 Br.3
------------- -------------------------------- ------------ ------ ------------ ------
101 (Plasiyer kodu)
101001 Müsteri..1 102,56 GL 98,75 GL
101005 Müsteri..5 128,28 GL
101007 Müsteri..7 112,15 GL
201
201001 Müsteri..1 75,18 GL 112,55 GL
201005 Müsteri..5 156,15 GL
201007 Müsteri..7 112,15 GL
Örnekte birinci sat.mik3 ilk tarih araligi ikincisi ise ikinci tarih araligi. Bunu "Müsteri 12 aylik satis" analizinin çalisma mantigindan yola çikarak yapilabilecegini düsünüyorum ve yedek sirkette amatörce ilgilenmem devam ediyor fakat sql de çok iyi degilim. Yardimi olan yada fikir veren olursa çok sevinirim tesekkürler.
(RC Standart ve SQL server 2005 kullaniyorum)
Serdar.
|
Cevaplar:
Mesajı Yazan: mbaykan
Mesaj Tarihi: 11 Mart 2011 Saat 11:10
Bu raporu bir view ile alamazsiniz. 4 tane tarih degiskeni oldugundan, ya STORED PROCEDURE ya da TABLE VALUE FUNCTION yazacaksiniz, ben 2.sini yaptim.
CREATE FUNCTION [dbo].[MFT_STCA](@TRH11 VARCHAR(10),@TRH12 VARCHAR(10),@TRH21 VARCHAR(10),@TRH22 VARCHAR(10)) RETURNS @SONUC TABLE ( PLS VARCHAR(20), CARI_KOD VARCHAR(35), CARI_ISIM VARCHAR(150), MIKTAR31 TDBFLOAT, BR31 VARCHAR(3), MIKTAR32 TDBFLOAT, BR32 VARCHAR(3) )
BEGIN
INSERT @SONUC SELECT PLS,CARI_KOD,CARI_ISIM,SUM(MIKTAR3A) MIKTAR3,BRM_A BRM,SUM(MIKTAR3B) MIKTAR3,BRM_B BRM FROM (select A.STOK_KODU,B.STOK_ADI,STHAR_ACIKLAMA CARI_KOD,CARI_ISIM,A.PLASIYER_KODU PLS,STHAR_GCMIK,((CASE WHEN A.STHAR_GCKOD='C' THEN A.STHAR_GCMIK ELSE 0 END) * (CASE WHEN B.PAYDA2=0 THEN 0 ELSE (B.PAY2/B.PAYDA2) END)) MIKTAR3A,B.OLCU_BR3 BRM_A,0 MIKTAR3B,NULL BRM_B FROM TBLSTHAR A INNER JOIN TBLSTSABIT B ON A.STOK_KODU=B.STOK_KODU INNER JOIN TBLCASABIT C ON A.STHAR_ACIKLAMA=C.CARI_KOD WHERE A.STHAR_TARIH BETWEEN @TRH11 AND @TRH12 AND STHAR_GCKOD='C' AND STHAR_HTUR LIKE '[H-J]' UNION ALL select A.STOK_KODU,B.STOK_ADI,STHAR_ACIKLAMA CARI_KOD,CARI_ISIM,A.PLASIYER_KODU PLS,STHAR_GCMIK,0 MIKTAR3A,NULL BRM_A,((CASE WHEN A.STHAR_GCKOD='C' THEN A.STHAR_GCMIK ELSE 0 END) * (CASE WHEN B.PAYDA2=0 THEN 0 ELSE (B.PAY2/B.PAYDA2) END)) MIKTAR3B,B.OLCU_BR3 BRM_B FROM TBLSTHAR A INNER JOIN TBLSTSABIT B ON A.STOK_KODU=B.STOK_KODU INNER JOIN TBLCASABIT C ON A.STHAR_ACIKLAMA=C.CARI_KOD WHERE A.STHAR_TARIH BETWEEN @TRH21 AND @TRH22 AND STHAR_GCKOD='C' AND STHAR_HTUR LIKE '[H-J]' ) XX GROUP BY PLS,CARI_KOD,CARI_ISIM,BRM_A,BRM_B RETURN
END
Kullanmak için
SELECT * FROM DBO.MFT_STCA('2010-01-01','2010-01-07','2010-02-01','2010-02-07')
seklinde yapabilirsiniz kolay gelsin
------------- Mehmet Baykan
|
Mesajı Yazan: srdkrtd
Mesaj Tarihi: 11 Mart 2011 Saat 13:59
mbaykan, çok tesekkür ederim :) bu kadar çabuk birisinin yardim etmesi süper.
Eger yogun degilseniz bir sorum daha var.
Bu yazdiginiz kodu netsis içerisinden rapor olarak çalistirmam mümkün degil mi? çünkü bu raporu sadece operatörlük yapan bir arkadas kullanacak. Bu mümkün degilse bu koda sunuda ilave edebilirmisiniz? plasiyer kodu 101 ve 106 arasi olacak (plasiyer kodunu stok hareketten aliyorsak.. eger cari sabitten aliyorsak "cari kod1" 101 ve 106 arasi olacak. Ve sonradan farkettim ayni müsteriyi iki satirda listeliyor tek satira indirilebilirmi? Çok tesekkür ederim.
101 |
000001-2 |
OLGUN GIDA LTD. |
0.00000000 |
|
324.444.300 |
9L |
101 |
000001-2 |
OLGUN GIDA LTD. |
668.333.200 |
9L |
0.00000000 |
|
Serdar.
|
Mesajı Yazan: mbaykan
Mesaj Tarihi: 14 Mart 2011 Saat 14:33
Fonksiyonu asagidaki sekilde degistirin,
Plasiyer'in çift çikmasi sorunu ortadan kalkacak. Plasiyer araligini 101 ila 106 arasi yaptim
maalesef Netsis içinden bu sorguyu yaptirmak mümkün degil.
Benim tercihim Excel'e bir disveri olarak tanimlamaniz.
hem Excel'de 4 adet tarih parametresini de tablonuza yerlestirebilirsiniz.
ALTER FUNCTION [dbo].[MFT_STCA](@TRH11 VARCHAR(10),@TRH12 VARCHAR(10),@TRH21 VARCHAR(10),@TRH22 VARCHAR(10))
RETURNS @SONUC TABLE
(
PLS VARCHAR(20),
CARI_KOD VARCHAR(35),
CARI_ISIM VARCHAR(150),
MIKTAR31 TDBFLOAT,
BR31 VARCHAR(3),
MIKTAR32 TDBFLOAT,
BR32 VARCHAR(3)
)
BEGIN
INSERT @SONUC
SELECT PLS,CARI_KOD,CARI_ISIM,SUM(MIKTAR3A) MIKTAR3,MAX(BRM_A) BRM,SUM(MIKTAR3B) MIKTAR3,MAX(BRM_B) BRM
FROM (select A.STOK_KODU,B.STOK_ADI,STHAR_ACIKLAMA CARI_KOD,CARI_ISIM,A.PLASIYER_KODU PLS,STHAR_GCMIK,((CASE WHEN A.STHAR_GCKOD='C' THEN A.STHAR_GCMIK ELSE 0 END) *
(CASE WHEN B.PAYDA2=0 THEN 0 ELSE (B.PAY2/B.PAYDA2) END)) MIKTAR3A,B.OLCU_BR3 BRM_A,0 MIKTAR3B,NULL BRM_B
FROM TBLSTHAR A INNER JOIN
TBLSTSABIT B ON A.STOK_KODU=B.STOK_KODU INNER JOIN
TBLCASABIT C ON A.STHAR_ACIKLAMA=C.CARI_KOD
WHERE A.STHAR_TARIH BETWEEN @TRH11 AND @TRH12 AND STHAR_GCKOD='C' AND STHAR_HTUR LIKE '[H-J]' AND A.PLASIYER_KODU BETWEEN '101' AND '106'
UNION ALL
select A.STOK_KODU,B.STOK_ADI,STHAR_ACIKLAMA CARI_KOD,CARI_ISIM,A.PLASIYER_KODU PLS,STHAR_GCMIK,0 MIKTAR3A,NULL BRM_A,((CASE WHEN A.STHAR_GCKOD='C' THEN A.STHAR_GCMIK ELSE 0 END) *
(CASE WHEN B.PAYDA2=0 THEN 0 ELSE (B.PAY2/B.PAYDA2) END)) MIKTAR3B,B.OLCU_BR3 BRM_B
FROM TBLSTHAR A INNER JOIN
TBLSTSABIT B ON A.STOK_KODU=B.STOK_KODU INNER JOIN
TBLCASABIT C ON A.STHAR_ACIKLAMA=C.CARI_KOD
WHERE A.STHAR_TARIH BETWEEN @TRH21 AND @TRH22 AND STHAR_GCKOD='C' AND STHAR_HTUR LIKE '[H-J]' AND A.PLASIYER_KODU BETWEEN '101' AND '106'
) XX
GROUP BY PLS,CARI_KOD,CARI_ISIM
RETURN
END
------------- Mehmet Baykan
|
Mesajı Yazan: Çaylak
Mesaj Tarihi: 14 Mart 2011 Saat 14:47
Bu çalismayi, Excel dis veri alma seklinde olsa birçok arkadasimiz faydalanir.
Selamlar...
|
Mesajı Yazan: srdkrtd
Mesaj Tarihi: 15 Mart 2011 Saat 08:59
Mesajı Yazan: srdkrtd
Mesaj Tarihi: 16 Mart 2011 Saat 16:01
Selam, dün bütün gün excele dis veri tanimlamaya çalistim en sonunda basardim fakat tek tarih ve tek miktar alabiliyorum sanirim yine içine fonksiyon yazmak lazim.. o asamada takildim..
Birde asil kafama takilan su; mesela müsteri 12 aylik mal analizinde "AL12OTR" view i çalisiyor o da "AL12" tablosundan okuyor degerleri. Ben isin tam temelini bilmedigimden basitçe söyle mantik kurdum; "AL12OTR" baska isimle çogaltilsa ve sql den bunun içindeki 12 aylik miktarlar yani mik1-mik2 nin tanimlarina ulasilsa mesela mutlaka ocak ayi için sirketin içinde bulundugu mali yilin 1 ocak ve 31 ocak tarihleri tanimlidir.. bu tarih araligini bir haftalik dilim halinde tanimlasam subat yerinede kiyaslamak istedigim ikinci hafta tarihini tanimlasam ve analizi her iki tarihide kapsayacak sekilde çalistirsam.. netsis içinde bu sekilde sorgu alani yaratamazmiyim? yani bunu ay bazinda yapiyorsa bu sekilde de olabilr diye düsünüyorum. düsüncemin olur tarafi varmi sence? tesekkürler..
|
Mesajı Yazan: mbaykan
Mesaj Tarihi: 16 Mart 2011 Saat 20:54
AL12OTR view'inda 12 miktar ve 12 tutar sütunu var,
yani 24 sütun. siz bunu Miktar1 ve Miktar2 olarak 52 haftalik
istiyorsunuz degil mi? 104 sütun olacak. Dogru mu anladim?
yapilir. yapilmaz degil ama...
------------- Mehmet Baykan
|
Mesajı Yazan: Conari
Mesaj Tarihi: 17 Mart 2011 Saat 08:44
Haftalari satir satir al excelde Pivot table yap. Case When ve Datepart ile 52 haftayi tek
tek cümleye yazmak çok yavas bir view olur. yani;
kod Hafta Miktar
xxxx - 1- 1500
xxxx - 2- 2526
...
------------- Netsisden vazgeçemiyorum. Beni engelliyor..
|
Mesajı Yazan: srdkrtd
Mesaj Tarihi: 17 Mart 2011 Saat 09:24
Hayir 52 hafta istemiyorum. :) Isin asli su; biz yil sonunda devir yapmadan ilerliyoruz 2009 dan beri aslinda bu yapilabilirse yil bilgileri ayri sirketlerde de olsa tanimlanir sanirim, fakat bizde tüm veriler ayni sirket içinde.. Yapmak istedigim bir plasiyerin 2010 yilinin mesela 01 Mart 2010 ve 07 Mart 2010 tarih araligi yani yilin 9.haftasinda hangi müsteriye toplam ne kadar mal sattigi ile 2011 yilinin 9.haftasinda (28 Subat 2011 - 06 Mart 2011) ne kadar sattiginin kiyaslamasi ve henüz gerçeklesmemis olan 10. haftanin ise sadece 2010 satis toplamlari ve bu son sütuna belirli bir yüzde artis vererek yeni haftaya hedef miktar belirlemek. Bu durumda eger mümkünse en çok geriye dönük 2 hafta yani 2009-2010 ve bulundugumuz hafta 2011 ve 2010 un hedef belirlenecek haftasi yani 4 sütun oluyor yada 2009 olmazsa 3 ayrica tutar bilgileri gerekmiyor.. Umarim anlatabilmisimdir.. Yukaridaki kod harika çalisiyor fakat kullanacak kisinin sql e girip bunu yapmasi mümkün degil daha basit bir sorgualani ile netsis yada excel den olabilirmi bu islem..? Tesekkürler.
|
Mesajı Yazan: mbaykan
Mesaj Tarihi: 17 Mart 2011 Saat 10:03
Excel tablosu hazirladim mail adresinizi verirseniz gönderecegim
------------- Mehmet Baykan
|
Mesajı Yazan: srdkrtd
Mesaj Tarihi: 17 Mart 2011 Saat 10:12
Mesajla gönderdim.. tesekkürler.
|
Mesajı Yazan: Conari
Mesaj Tarihi: 17 Mart 2011 Saat 17:57
mbaykan Yazdı:
Excel tablosu hazirladim mail adresinizi verirseniz gönderecegim |
Üstadim bizde alalim. 
------------- Netsisden vazgeçemiyorum. Beni engelliyor..
|
Mesajı Yazan: tlosfethiye
Mesaj Tarihi: 17 Mart 2011 Saat 21:40
Merhaba,
mehmet bey,
çalismanizi bende alabilir miyim.
iyi çalismalar
------------- Recep TEKE
ASR Danişmanlik
|
Mesajı Yazan: ixir
Mesaj Tarihi: 01 Mayıs 2012 Saat 16:05
eger mumkunse bu dosylari bende alabilirmiyim.
özelden mesaj attim size ama sanirim gelen kutunuz dolu oldugu için onaylanmadi
simdiden tesekkürler
okandunay@hotmail.com
------------- etkinboya
|
Mesajı Yazan: mbaykan
Mesaj Tarihi: 01 Mayıs 2012 Saat 16:27
bana özel mesajiniz gelmedi ??
Tekrar mesajinizi gönderim mesajlarimi temizledim
------------- Mehmet Baykan
|
Mesajı Yazan: ixir
Mesaj Tarihi: 01 Mayıs 2012 Saat 18:17
gönderemedim zaten mbaykan bey.
kullanicinin mesaj limiti dolu dedi.
dosyalar hala elinizdeyse bende rica ediyorum yeni basladim excel sql derlemelerine yardim ederseniz gerçekten çok sevinirim
------------- etkinboya
|
|