SQL - Süreç istatistikleri
declare @month as int
declare @year as int

/* Hangi yıldan alınmasını istiyorsanız belirtiniz */
select @month=1,@year=2024





IF OBJECT_ID('dbo.SurecStats', 'U') IS NULL
    BEGIN
    
	CREATE TABLE SurecStats (
								Name nvarchar(200), 
								Sayi int, 
								Yil int, 
								ay int 
	)
    
	END
ELSE
BEGIN
    truncate table dbo.SurecStats
END
 

  
  
WHILE (@year <= datepart(year,getdate()))
BEGIN
  
    WHILE (@month < 13)
    BEGIN
        INSERT INTO SurecStats
		select p.Name as 'Süreç İsmi',count(p.Name), MIN(DATEPART(year,i.StartDate)),MIN(DATEPART(MONTH,i.StartDate))
        from wflWorkItems wi with (nolock) left outer join
                      wflInstances i with (nolock) on i.Id=wi.Instance left outer join
                      wflProcessVersions pv on pv.Id =i.ProcessVersion left outer join
                      wflProcesses p on p.Id=pv.Process
                      where DATEPART(year,i.StartDate)=@year and DATEPART(MONTH,i.StartDate) =@month and i.Parent is null and wi.Previous is null
                      group by p.Name
                      order by 2 desc
  
        select @month=@month+1
    END
    select @year=@year+1
    select @month=1
END
  


DECLARE		@query nvarchar(max),
			@tblname nvarchar(max), 
			@colsUnpIvot nvarchar(max)='',
			@unwnatedcols nvarchar(max)='' 
	SET @tblname='SurecStats';
	SET @query=N'
					SELECT 
							@COLSUNPIVOT=STUFF((SELECT '+CHAR(39)+', '+CHAR(39)+'+  QUOTENAME(Yil)      
					FROM '+ @TBLNAME +' 
					group by QUOTENAME(Yil)
					FOR  XML PATH (' +CHAR(39)+''+CHAR(39)+')), 1, 1, ' +CHAR(39)+''+CHAR(39)+ ')'    

	execute sp_executesql @query, N'@COLSUNPIVOT NVARCHAR(MAX) output',        
	@COLSUNPIVOT = @COLSUNPIVOT OUTPUT


declare @dnmkSQK nvarchar(max) = '
									select 
										* 
									from ( 
											select 
												Name,
												Yil,
												Sum(sayi) as Sayi 
											from SurecStats 
									group by Name,Yil
									) src pivot (sum(Sayi) for Yil in ('+@COLSUNPIVOT+')) pvt
									order by 3 desc'
  


exec sp_executesql @dnmkSQK






  • No labels