在 SQL Unpivot 中包含列名

Include Column name in SQL Unpivot

我有一个未规范化的数据集,我需要对其进行规范化以用于报告目的。

    SELECT [Id]
      ,[Timestamp]
      ,[Question1]
      ,[Question2]
      ,[Question3]
      ,[Question4]
  FROM [COS].[dbo].[Sheet2$]

我使用这个成功地取消了数据透视:

    SELECT Id,
       Result
FROM   (SELECT Id,
               Cast([Question1] AS VARCHAR(255)) AS Q1,
               Cast([Question2] AS VARCHAR(255)) AS Q2,
               Cast([Question3] AS VARCHAR(255)) AS Q3,
               Cast([Question4] AS VARCHAR(255)) AS Q4
        FROM   Sheet2$) AS A
       UNPIVOT ( result
               FOR questions IN ( Q1,
                                  Q2,
                                  Q3,
                                  Q4 ) ) AS b

如何逆透视列 headers Question1、Question2、Question3、Question4 作为我的逆透视查询中的第三列,像这样?

你的语法看起来像 SQL 服务器。如果是这样,只需使用 APPLY:

SELECT s.id, v.*
FROM Sheet2$ s CROSS APPLY
     (VALUES ('Question1', s.Question1),
             ('Question2', s.Question2),
             ('Question3', s.Question3),
             ('Question4', s.Question4)
     ) v(question, result);