[英]SQL - Pivoting on Column and Row Values
我正在嘗試在X和Y位置上旋轉數據表。 該表的格式與下面類似。
每行都有一個相對於其行和列位置的值。在數據集中將忽略“ AThing”和“ FileName”。
因此,如果這是關鍵,我們將得到:
我已經嘗試了一段時間,但似乎無法弄清楚,有什么想法嗎?
編輯:字段數是每個'FileName'動態的。 我設法使用以下方法提取列名而不是數據:
-- Construct List of Columns to Pivot
SELECT @PivotCols =
STUFF(
(SELECT ',' + QUOTENAME(FieldName)
FROM #Data
GROUP BY ColPos, FieldName
ORDER BY ColPos ASC
FOR XML PATH(''),TYPE).value('.', 'NVARCHAR(MAX)')
,1,1,'')
SET @PivotQuery =
SELECT ' + @PivotCols + N'
FROM
(
SELECT ColPos, FieldName
FROM #Data
GROUP BY ColPos, FieldName
) x
PIVOT
(
MIN(ColPos)
FOR FieldName IN (' + @PivotCols + N')
) p'
EXEC sp_executesql @PivotQuery
請嘗試以下代碼:
DECLARE @columns NVARCHAR(MAX), @sql NVARCHAR(MAX);
SET @columns = N'';
SELECT @columns += N', p.' + QUOTENAME(FieldName)
FROM (SELECT distinct p.FieldName FROM Tablename AS p
) AS x;
SET @sql = N'
SELECT ' + STUFF(@columns, 1, 2, '') + '
FROM
(
SELECT p.Value, p.FieldName, p.RowPos
FROM Tablename AS p
) AS j
PIVOT
(
MAX(Value) FOR FieldName IN ('
+ STUFF(REPLACE(@columns, ', p.[', ',['), 1, 1, '')
+ ')
) AS p;';
PRINT @sql;
EXEC sp_executesql @sql;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.