Hi @ahmed salah ,
Please refer below:
DECLARE @result NVARCHAR(MAX)
DECLARE @result1 NVARCHAR(MAX)
DECLARE @col NVARCHAR(MAX)
DECLARE @sqldata NVARCHAR(MAX)
SELECT @result = ( SELECT STUFF(( SELECT ',[' + cast(zlcStatus as varchar(30)) + ']' FROM extractreports.dbo.getpldata with(nolock)
group by zlc,zlcStatus
ORDER BY zlc,zlcStatus asc
FOR
XML PATH('')
), 1, 1, '') AS [Output] )
SELECT @result1 = ( SELECT STUFF(( SELECT ',cast([' + cast(zlcStatus as varchar(30)) + '] as char(10)) '+QUOTENAME(cast(zlcStatus as varchar(30))) FROM extractreports.dbo.getpldata with(nolock)
group by zlc,zlcStatus
ORDER BY zlc,zlcStatus asc
FOR
XML PATH('')
), 1, 1, '') AS [Output] )
SELECT @col = ( SELECT ',''' + cast(zlcStatus as varchar(30)) + ''' as ''' + QUOTENAME(zlcStatus) + ''''
FROM extractreports.dbo.getpldata with(nolock)
group by zlc,zlcStatus
ORDER BY zlc,zlcStatus asc
FOR
XML PATH('')
)
set @sqldata= '
select top 1 ''PL'' as ''PL'' ,''Company'' as ''Company'',''Z2designator'' as ''Z2designator'''
+ @col + '
into extractreports.dbo.getalldata from extractreports.dbo.getpldata
union all
(SELECT top 999999 [PL],[Company],[Z2designator],'+@result1+'
FROM
(
SELECT
[PL],
[Company],
[Z2designator],
cast(zlcStatus as varchar(30)) as [zlcStatus],
cast([PartId] as varchar(20))as [PartId]
FROM extractreports.dbo.getpldata
group by
[PL],
[Company],
[Z2designator],
cast(zlcStatus as varchar(30)),
cast([PartId] as varchar(20))
) AS SourceTable PIVOT(count([PartId]) FOR [zlcStatus] IN(' + @result + ')) AS PivotTable)
'
EXEC (@sqldata)
select * from extractreports.dbo.getalldata
Output:
Best regards,
Melissa
If the answer is helpful, please click "Accept Answer" and upvote it.
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.