Piviot pro max
select Distinct e.EmployeeGUID,e.EmployeeID,evc.ChoiceCode as extravalueChoice,ev.Value,utc.ChoiceCode userTypeChoice,mu.UserName userTypeUser,dtc.ChoiceCode as dateTypeChoice,mud.UserName as dateTypeUser into #bigG from Employee e --
left join EmployeeCertification ec on ec.EmployeeGUID=e.EmployeeGUID
left join EmployeeSkill es on es.EmployeeGUID=e.EmployeeGUID
left join ExtraValue ev on ev.FKGUID=e.EmployeeGUID
left join UserType ut on ut.FKGUID=e.EmployeeGUID
left join DateType dt on dt.FKGUID=e.EmployeeGUID
left join ConfigCertificationType cc on cc.ConfigCertificationTypeGUID=ec.ConfigCertificationTypeGUID
left join ConfigSkillCode cs on cs.ConfigSkillCodeID=es.ConfigSkillCodeId
left join ConfigChoice evc on evc.ConfigChoiceID=ev.LabelConfigChoiceID
left join ConfigChoice utc on ut.UserTypeConfigChoiceID=utc.ConfigChoiceID
left join ConfigChoice dtc on dtc.ConfigChoiceID=dt.DateTypeConfigChoiceID
left join MasterUser mu on mu.UserGUID=ut.UserGUID
left join MasterUser mud on mu.UserGUID=mud.UserGUID
order by 1
select distinct EmployeeGUID as certiG ,
STUFF((SELECT distinct ','+ y.CertificationName from ConfigCertificationType as y
inner join EmployeeCertification ec on ec.ConfigCertificationTypeGUID=y.ConfigCertificationTypeGUID
Where ec.EmployeeGUID=g.EmployeeGUID
For XML PATH ('')),1,1,'') [certification],
STUFF((SELECT distinct ','+ y.SkillCode from ConfigSkillCode as y
inner join EmployeeSkill es on es.ConfigSkillCodeID=y.ConfigSkillCodeID
Where es.EmployeeGUID=g.EmployeeGUID
For XML PATH ('')),1,1,'') [skills]
into #skillandcerti from #bigG g
select Distinct EmployeeGUID extrag ,extravalueChoice,value into #Extras from #bigG
select Distinct EmployeeGUID userg ,userTypeChoice,userTypeUser into #userty from #bigG
SELECT DISTINCT CONCAT('[', userTypeChoice,']')userTypeChoice INTO #usertype
FROM #bigG
if exists (select 1 from #usertype where userTypeChoice='[]')
begin
update #usertype set userTypeChoice='[noColumn1]' where userTypeChoice='[]'
end
--select * from #usertype
DECLARE @forpiviotuser varchar(max)
SELECT top 1
@forpiviotuser = STUFF(
(SELECT Distinct ','+userTypeChoice FROM #usertype FOR XML PATH ('')), 1, 1, ''
)
FROM #usertype
SELECT DISTINCT CONCAT('[', extravalueChoice,']')extravalueChoice INTO #ExtraVal
FROM #bigG
if exists (select 1 from #ExtraVal where extravalueChoice='[]')
begin
update #ExtraVal set extravalueChoice='[noColumn2]' where extravalueChoice='[]'
end
--select * from #ExtraVal
DECLARE @forpiviotExtra varchar(max)
SELECT top 1
@forpiviotExtra = STUFF(
(SELECT Distinct ','+extravalueChoice FROM #ExtraVal FOR XML PATH ('')), 1, 1, ''
)
FROM #ExtraVal
DECLARE @sql NVARCHAR(MAX)
SET @Sql = N'
SELECT E.EmployeeGUID,E.FirstName+E.LastName as EmployeeName,PivotTable.* into #piv1 FROM (
SELECT *
FROM #Extras
) Finalres
PIVOT (
MAX([Value])
FOR [extravalueChoice]
IN (
'+@forpiviotExtra+'
)) AS PivotTable
INNER JOIN Employee E ON E.EmployeeGUID = PivotTable.extrag;
SELECT PivotTable.* into #piv2 FROM (
SELECT *
FROM #userty
) Finalres
PIVOT (
MAX([userTypeUser])
FOR [userTypeChoice]
IN (
'+@forpiviotuser+'
)) AS PivotTable
INNER JOIN Employee E ON E.EmployeeGUID = PivotTable.userg;
select * into #mainpiv from #piv1 p1 inner join #piv2 p2
on p1.extrag=p2.userg
inner join #skillandcerti sc on sc.certiG=p1.extrag
alter Table #mainpiv drop column userg
alter Table #mainpiv drop column extrag
alter Table #mainpiv drop column certiG
select * from #mainpiv
';
exec(@Sql)
drop table #bigG
drop table #usertype
drop table #ExtraVal
drop table #Extras
Drop table #skillandcerti
drop table #userty
Comments
Post a Comment