Stored Procedurelerle zamanında basit bir aylık rapor yapmıştım, kendi projene göre uyarlamayı dene, takılırsan yine yardımcı olmaya çalışırım.
Verilen rakama göre ay adını getiriyor.
Kod: Tümünü seç
CREATE PROCEDURE AYGETIR(
AY SMALLINT)
RETURNS(
AYADI CHAR(9) CHARACTER SET NONE)
AS
BEGIN
if ((ay < 1) and (ay > 12)) then ayadi='GECERSIZ';
else
if (ay=1) then ayadi='OCAK';
else
if (ay=2) then ayadi='ŞUBAT';
else
if (ay=3) then ayadi='MART';
else
if (ay=4) then ayadi='NİSAN';
else
if (ay=5) then ayadi='MAYIS';
else
if (ay=6) then ayadi='HAZİRAN';
else
if (ay=7) then ayadi='TEMMUZ';
else
if (ay=8) then ayadi='AĞUSTOS';
else
if (ay=9) then ayadi='EYLÜL';
else
if (ay=10) then ayadi='EKİM';
else
if (ay=11) then ayadi='KASIM';
else
if (ay=12) then ayadi='ARALIK';
SUSPEND;
END
;
Aylık hareketleri getiriyor, ay ismi için aygetir procedurenu kullanıyor.
Benim tablomda sayfada ay rakamı tutuluyordu. Eger ay için ayrı bir alanın yoksa, tarihten alabilirsin.
select extract (month from tarih), sum .. veya select extract(week from tarih), sum ....
group by 1
şeklinde kullanabilirsin.
Kod: Tümünü seç
CREATE PROCEDURE AYLIKDEFTER
RETURNS(
AY CHAR(9) CHARACTER SET NONE,
SAYI INTEGER,
MIKTAR NUMERIC(18, 2),
TUTAR NUMERIC(18, 2))
AS
DECLARE VARIABLE AY1 SMALLINT;
BEGIN
FOR
select sayfa,count(*),sum(miktar),sum(tutar) from defhar7
group by sayfa
into :ay1,:sayi, :miktar, :tutar
DO
begin
select ayadi from aygetir(:ay1)
into :ay ;
SUSPEND;
end
END
;