如何动态地仅旋转一列,而其余部分保持原位

时间:2018-11-14 14:08:57

标签: sql-server pivot

我尝试动态地旋转4列的表。 到目前为止,我设法绕过了列“ AttributeId”,但是,旁边仅显示了键索引“ RefRecId”。我也想同时显示其他两列。

我想知道必须在哪里调整select语句才能将其他列添加到结果中。这些列不必旋转,只需选择与键(RefRecId)相同的方式即可。

到目前为止,下面的代码:

DECLARE @cols AS NVARCHAR(max) = Stuff((SELECT DISTINCT ', ' + Quotename(AttributeId) 
     FROM   SATATTRIBUTEREF       
     FOR xml path(''), type).value('.', 'NVARCHAR(MAX)'), 1, 1, ''); 

DECLARE @maxCols AS NVARCHAR(max) = Stuff((SELECT DISTINCT ', max(' + Quotename(AttributeId) + ') as ' + Quotename(AttributeId)
     FROM   SATATTRIBUTEREF       
     FOR xml path(''), type).value('.', 'NVARCHAR(MAX)'), 1, 1, ''); 

DECLARE @query AS NVARCHAR(max) =  'SELECT     fat.RefRecId,'+@maxCols+'
                                FROM       (SELECT RefRecId, '+ @cols +'
                                            FROM   SATATTRIBUTEREF 
                                            PIVOT(Max(Value) FOR AttributeId IN ('+ @cols +')) piv) fat


                                group by   fat.RefRecId';

EXECUTE(@query)

我在这里想念什么?

编辑:我有些停电,我试图做的事既不可能也不是必要的。对不起! 亲切的问候, 伊戈尔(Igor)

0 个答案:

没有答案