Merhaba,
Aşağıdaki şekilde bir deneyebilir misiniz?
Bir stored procedure ile alacağız Stored procedure aşağıdaki gibidir.
Kod: Tümünü seç
CREATE PROCEDURE BUROSAY (
GONDERILEN VARCHAR(40),
TAR1 DATE,
TAR2 DATE)
RETURNS (
EKIPADI VARCHAR(40),
EKIPSAYISI INTEGER)
AS
begin
FOR
SELECT BUROEKIP,RAPORID
FROM olayuzman
where buroekip=:gonderilen AND RAPORID in (SELECT RAPORID FROM olayrapor WHERE
INCTARIHI BETWEEN :TAR1 AND :TAR2 AND OLAYSONUC='OLAY TESPİT')
GROUP BY BUROEKIP,RAPORID
INTO :ekipadi,:ekipsayisi
DO
BEGIN
suspend;
END
end
^
SET TERM ; ^
Yukarıdaki kod size tam uymayacaktır. Çünkü GONDERILEN parametresi varchar sizde integer görünüyor. Bunu ibexpertte denedikten sonra kendinize uyarlarsınız.
Belki daha kısa bir yolu vardır. Şimdilik bu şekilde idare edin.
Kullanımı ise :
Kod: Tümünü seç
SELECT DISTINCT OLAYUZMAN.BUROEKIP, (SELECT count (*) FROM BUROSAY(OLAYUZMAN.BUROEKIP,:TARIH1,:TARIH2) ) AS toplam
FROM OLAYRAPOR ,OLAYUZMAN
şeklinde kullanırsanız. Hiç olay çözmemiş ekip de listelenir ama karşısında 0 olur.
Kod: Tümünü seç
SELECT DISTINCT OLAYUZMAN.BUROEKIP, (SELECT count (*) FROM BUROSAY(OLAYUZMAN.BUROEKIP,:TARIH1,:TARIH2) ) AS toplam
FROM OLAYRAPOR INNER JOIN OLAYUZMAN ON OLAYRAPOR.RAPORID=OLAYUZMAN.RAPORID
WHERE OLAYRAPOR.INCTARIHI
BETWEEN :TARIH1 AND :TARIH2 AND OLAYRAPOR.OLAYSONUC='OLAY TESPİT'
şeklinde kullanırsanız şartınızı sağlayan ekip isimleri ve çözdükleri olay sayısı görünür.
Kolay gelsin.