Need help converting the below query to a function
ALTER PROCEDURE [dbo].[rpt_outboundagentstatus]
AS
BEGIN
SET NOCOUNT ON;
declare @query nvarchar(4000)
declare @agentstats nvarchar (4000)
select @agentstats= STUFF((
SELECT DISTINCT
'],[' + ltrim((StatusKey))
FROM CIC_AgentActivityLog
ORDER BY '],[' + ltrim((StatusKey))
FOR XML PATH('')), 1, 2, '') + ']'
set @query =
'select *
from (
SELECT CAST(a.StatusDateTime AS DAte) AS Date, er.EmployeeID, a.UserId, c.CampaignName, a.StatusKey,a.StateDuration
FROM dbo.CIC_AgentActivityLog AS a INNER JOIN
dbo.IndivDetails_vel1 AS r ON a.UserId = r.ICUserID AND DATEDIFF(m, a.StatusDateTime, GETDATE()) <= 1 AND r.Active = 1 INNER JOIN
dbo.hr_EmployeeRollCall AS er ON r.StreetAddress = er.EmployeeID COLLATE Latin1_General_CI_AS AND CAST(a.StatusDateTime AS DAte)
= er.RollCallDate INNER JOIN
dbo.hr_Campaign AS c ON er.CampaignID = c.CampaignID AND c.IsActiveReports = 1 ) as agentstats
PIVOT (sum(StateDuration) for StatusKey in ('+@agentstats+')) as pvt'
EXECUTE (@query)
END