
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date, ,>
-- Description:	<Description, ,>
-- =============================================
ALTER FUNCTION [dbo].[getProcentWykonaniaPlanu] 
(
	-- Add the parameters for the function here
	@idAgencji int,
	@rok int,
	@miesiac int
)
RETURNS decimal(9,4)
AS
BEGIN
DECLARE @prowizja DECIMAL(9,4)

SELECT @prowizja = ROUND(AVG(procent), 4) --as Procent
FROM 
(
SELECT PL.Id_agencji, PL.AGENCJA, PL.ROK, PL.MS, PL.PLANOWANY_BUDZET_AGENCJI, PL.WYKONANY_BUDZET_AGENCJI, dbo.BUDZET_BIUR.BUDZET AS 
PLAN_BIURA, CONVERT (datetime, CONVERT (nvarchar, PL.ROK) + '-' + CONVERT (nvarchar, PL.MS) + '-1') AS data, 
1.0 * PL.WYKONANY_BUDZET_AGENCJI / dbo.BUDZET_BIUR.BUDZET AS procent, PL.Unia FROM (SELECT dbo.Agencje.Unia ,
 dbo.AGENCJE.Symbol AS AGENCJA , dbo.[PLAN].ROK , dbo.[PLAN].MS , SUM(dbo.[PLAN].BUDZET) AS PLANOWANY_BUDZET_AGENCJI , 
SUM(dbo.[PLAN].W_BUDZET) AS WYKONANY_BUDZET_AGENCJI , dbo.AGENCJE.Id_agencji 
FROM dbo.AGENCI 
INNER JOIN dbo.AGENCJE ON dbo.AGENCI.ID_AGENCJI = dbo.AGENCJE.Id_agencji 
INNER JOIN dbo.[PLAN] ON dbo.AGENCI.Symbol = dbo.[PLAN].SYMBOL WHERE (Abs(dbo.AGENCJE.aktywna) = 1)
GROUP BY dbo.agencje.unia , dbo.AGENCJE.Symbol , dbo.[PLAN].ROK , dbo.[PLAN].MS , dbo.AGENCJE.Id_agencji) PL
LEFT OUTER JOIN dbo.BUDZET_BIUR ON PL.Id_agencji = dbo.BUDZET_BIUR.ID_BIURA AND PL.ROK = dbo.BUDZET_BIUR.ROK AND PL.MS = dbo.BUDZET_BIUR.MS
WHERE dbo.BUDZET_BIUR.BUDZET <> 0 ) W1
WHERE ROK=@rok AND MS=@miesiac AND Id_Agencji = @idAgencji
GROUP BY UNIA, Id_Agencji, AGENCJA,ROK,CONVERT(INTEGER,(1.0+datepart(quarter,data)))/2, datepart(quarter,data), MS

RETURN @prowizja

END
GO

SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO

