Как создать динамическую сводку для нескольких сотен записей в SQL server
У меня есть несколько сотен тысяч записей для динамического поворота. Я попробовал следующий запрос, и он отлично работает для выбранного идентификатора employee id.
и когда я хочу свернуть все записи сотрудников, это занимает очень много времени. Это правильный путь, чтобы сделать или какой-нибудь лучший способ сделать? Я прекратил казнь через полчаса, так как не получил результата.
Что я уже пробовал:
<pre lang="SQL">declare @cols nvarchar(max)=N'',@sql nvarchar(max)=N'',@uniqcols nvarchar(max)=N'' select @cols=isnull(@cols+',','')+QUOTENAME(concat(format(FromDate,'Y'),' to ',format(ToDate,'Y'))) from salaries where EmpId=15001 print @cols set @sql= 'select Firstname '+@cols+' from ( select e.Empid,e.Firstname,concat(format(s.FromDate,''Y''),'' to '',format(s.ToDate,''Y'')) as period,s.salary from employees e join salaries s on e.EmpId=s.Empid where e.EmpId=15001 )as source pivot ( sum(salary) for period in ('+stuff(@cols,1,1,'')+') )as derived' print @sql exec sp_executesql @sql
<pre lang="SQL">declare @cols nvarchar(max)=N'',@sql nvarchar(max)=N'',@uniqcols nvarchar(max)=N'' select @cols=isnull(@cols+',','')+QUOTENAME(concat(format(FromDate,'Y'),' to ',format(ToDate,'Y'))) from salaries print @cols set @sql= 'select Firstname '+@cols+' from ( select e.Empid,e.Firstname,concat(format(s.FromDate,''Y''),'' to '',format(s.ToDate,''Y'')) as period,s.salary from employees e join salaries s on e.EmpId=s.Empid )as source pivot ( sum(salary) for period in ('+stuff(@cols,1,1,'')+') )as derived' print @sql exec sp_executesql @sql
Есть ли какой-либо другой способ увеличить этот динамический сводный запрос за меньшее время?
Заранее спасибо.