SQL - 透视列和行值

时间:2018-04-27 18:49:10

标签: sql sql-server pivot dynamic-pivot

我正在尝试在X和Y位置上旋转表格。该表的格式类似于以下。

每一行都有一个相对于其行和列位置的值。数据集中将忽略“变形”和“文件名”。

enter image description here

因此,如果这是透视的,我们会得到:

enter image description here

我已经尝试了一段时间,但似乎无法弄清楚,有什么想法吗?

编辑:每个'FileName'的字段数是动态的。我设法使用:

提取列名但不提取数据
db.onceGetUsers().once('value').then(snap)=> {
var username = snap.child("name").child("name").val();
var surname = snap.child("name").child("surname").val();
});

1 个答案:

答案 0 :(得分:2)

请尝试以下代码:

 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;