CREATE FUNCTION CDN.ObrotyWn(@Konto VARCHAR(50), @RokMies INT) RETURNS DECIMAL(15,2) AS BEGIN CREATE TYPE arr AS INTEGER ARRAY[]; DECLARE msc INTEGER DEFAULT 0; DECLARE kw arr; -- tutaj beda miesiace z danego kwartalu. SET msc = @RokMies % 100; -- nie wiem czy to dobra syntaxa IF msc <= 3 THEN SET kw = [01, 02, 03]; -- tutaj też nie wiem ELSE IF msc <= 6 THEN SET kw = [04, 05, 06]; ELSE IF msc <= 9 THEN SET kw = [07, 08, 09]; ELSE IF msc <= 12 THEN SET kw = [10, 11, 12]; END IF; -- skoro mamy juz miesiace to trzeba napisac selekta SELECT * FROM [TABLE] WHERE RMZT == (RMZT - (RMZT%100) + Rkw[1]) OR RMZT == (RMZT - (RMZT%100) + Rkw[2]) OR RMZT == (RMZT - (RMZT%100) + Rkw[3]); DECLARE @Wynik DECIMAL(15,2), @OObId INT, @AccId INT -- Określamy Id bieżacego okresu obarchunkowego SELECT @OObId = CASE WHEN IsNumeric(Fir_Wartosc)=1 THEN CAST (Fir_Wartosc AS INT) ELSE NULL END FROM CDN.Firma WHERE Fir_Numer=244 -- Odczytujemy interesujące nas konto SELECT @AccId = Acc_AccId FROM CDN.Konta WHERE Acc_OObId = @OObId AND Acc_Numer=@Konto -- Odczytujemy obroty Ma z uwzględnieniem bufora SELECT @Wynik = Obr_ObrotyWnBufor FROM CDN.Obroty WHERE Obr_AccId = @AccId AND Obr_RokMies = @RokMies AND Obr_Typ = 0 RETURN IsNull(@Wynik, 0) END