【发布时间】:2022-08-16 12:34:50
【问题描述】:
declare @pivotColumn as varchar(max)
declare @pivotTable varchar (max)
--get distinct value for column names join from 3 different tables
select @pivotColumn = string_agg (QUOTENAME(Name),\',\')
from (
select distinct Name
from dbo.DTR
inner join dbo.Dim_Partner on dbo.DTR.Partner_ID = dbo.Dim_Partner.Partner_ID
where Project_ID > 0
)n
set @pivotTable = \'
with ActualDTRProject
as
(
select Project_Name as ProjectName
, Name as PartnerName
, Hours_Spent as HoursSpent
from dbo.DTR
inner join dbo.Project on dbo.DTR.Project_ID = dbo.Project.ID
inner join dbo.Dim_Partner on dbo.DTR.Partner_ID = dbo.Dim_Partner.Partner_ID
where Project_ID > 0
)
select upper(ProjectName) Project_Name,\'+ @pivotColumn +\'
from ActualDTRProject
pivot (sum(HoursSpent) for PartnerName in (\'+ @pivotColumn +\')) as d
order by Project_Name
\'
exec(@pivotTable)
----
Result Table 结果表: |项目名称 |Gab |Jocelle |保罗 |Rllamas| |-------|-----------|---------------|- ----------|--------| |项目A | 8.00 |5.00 |11.00 |5.00 | |项目 B |10.00 |8.00 |11.00 |7.00 | |项目 C |NULL |NULL |2.00 |6.00 | |项目 D |NULL |NULL |NULL |2.00 |
标签: sql dynamic null pivot-table