Kod: Tümünü seç
CREATE PROCEDURE AYLIK_TOPLAM_MAKINA_URETIMI (
makina varchar(30),
yil varchar(10))
returns (
makina_adi varchar(30),
ocak double precision,
subat double precision,
mart double precision,
nisan double precision,
mayis double precision,
haziran double precision,
temmuz double precision,
agustos double precision,
eylul double precision,
ekim double precision,
kasim double precision,
aralik double precision)
as
begin
FOR
select distinct A.MAKINAADI,
(SELECT sum (DEGER) FROM w_urt_raporlar WHERE makinaadi = A.makinaadi AND EXTRACT(month FROM TARIH) = 1 ) AS OCAK,
(SELECT sum (DEGER) FROM w_urt_raporlar WHERE makinaadi = A.makinaadi AND EXTRACT(month FROM TARIH) = 2 ) AS SUBAT,
(SELECT sum (DEGER) FROM w_urt_raporlar WHERE makinaadi = A.makinaadi AND EXTRACT(month FROM TARIH) = 3 ) AS MART,
(SELECT sum (DEGER) FROM w_urt_raporlar WHERE makinaadi = A.makinaadi AND EXTRACT(month FROM TARIH) = 4 ) AS NISAN,
(SELECT sum (DEGER) FROM w_urt_raporlar WHERE makinaadi = A.makinaadi AND EXTRACT(month FROM TARIH) = 5 ) AS MAYIS,
(SELECT sum (DEGER) FROM w_urt_raporlar WHERE makinaadi = A.makinaadi AND EXTRACT(month FROM TARIH) = 6 ) AS HAZIRAN,
(SELECT sum (DEGER) FROM w_urt_raporlar WHERE makinaadi = A.makinaadi AND EXTRACT(month FROM TARIH) = 7 ) AS TEMMUZ,
(SELECT sum (DEGER) FROM w_urt_raporlar WHERE makinaadi = A.makinaadi AND EXTRACT(month FROM TARIH) = 8 ) AS AGUSTOS,
(SELECT sum (DEGER) FROM w_urt_raporlar WHERE makinaadi = A.makinaadi AND EXTRACT(month FROM TARIH) = 9 ) AS EYLUL,
(SELECT sum (DEGER) FROM w_urt_raporlar WHERE makinaadi = A.makinaadi AND EXTRACT(month FROM TARIH) = 10 ) AS EKIM,
(SELECT sum (DEGER) FROM w_urt_raporlar WHERE makinaadi = A.makinaadi AND EXTRACT(month FROM TARIH) = 11 ) AS KASIM,
(SELECT sum (DEGER) FROM w_urt_raporlar WHERE makinaadi = A.makinaadi AND EXTRACT(month FROM TARIH) = 12 ) AS ARALIK
FROM
w_urt_raporlar A
WHERE
MAKINA = :MAKINA AND ISLEM_KOD = 1 AND
EXTRACT(YEAR FROM TARIH) = :YIL
order by makina, MAKINA_NO
into
:makina_adi, :ocak, :subat, :mart, :nisan, :mayis, :haziran, :temmuz, :agustos, :eylul, :ekim, :kasim, :aralik
DO
suspend;
end
Procedure aynen yukardaki gibi burdan dönen değer
Kod: Tümünü seç
makina 0cak şubat mart .............
-------- ------ ------ -------
1.makina 2562 2565 2222 ...........
şeklinde
parametre olarak 1.makina, 2006 gönderiyorum yukardaki değer geliyor
işletmede 10 adet makina var ben her makina için tek tek sorgu almak yerine makinalarınkayıtlı olduğu table kullanarak bir select cümlesi ile tamamını yukardaki gibi listelemek isytiyorum . Aşağıdaki örnek liste de olduğu gibi
Kod: Tümünü seç
makina 0cak şubat mart .............
-------- ------ ------ -------
1.makina 2562 2565 2222 ...........
2,makina 256 55 3565...........
4.makina 2333 4444 2222...........
5.makina 222 333 444...........
Aslında makinalarıda aynı procedure içerisinde listeletebilirdim fakat makinalar kendi içinde gruplara ayrılıyor o nedenle bu şekilde bir procedure daha çok işime geldi provedure nin çalışmasında problem yok
sorunsuz geliyor
Kod: Tümünü seç
SELECT
(SELECT OCAK,SUBAT,MART FROM aylik_toplam_makina_uretim :KOD,'2006'))
FROM
URT_MAKINA
Yukardaki şekilde çalıştıramadım ne hikmetse ..
Teşekkür ederim.