簡體   English   中英

SQL-透視列和行值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM