我尝试动态地旋转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)