SQL Pivot 大量记录、字符串数据



我有三列,每列都是NVARCHAR。对于保存数据的第二列的每个实例,我的第一个"Id"列多次出现(在第三列中。

我尝试使用枢轴运算符,但在使用它时使用字符串数据时遇到问题。

表示例:

RecordId    QuestionText              Data
1           Completion Date           26/01/2016
1           Gender                    M
1           PreCourse Info            2
1           Application Process       1

透视要求示例:

RecordId  Completion Date Gender Precourse Info Application Process
1         26/01/2016      M      2              1

为上面的裤子表布局道歉。

有大量数据(1595 个不同的 RecordId),每个 RecordId 大约有 50 行。

在阅读了一些帖子后,我尝试了以下方法:

SELECT *
FROM 
(
   SELECT 
       RecordId
      ,QuestionText
      ,Data
    FROM #PrePivot
) AS P
PIVOT
(
Data FOR QuestionText 
)   AS Pvt

如果您能建议我的代码中是否缺少某些内容,或者最好不要使用 pivot 运算符,我们将不胜感激。

感谢您抽出宝贵时间

试试这个:

;WITH PivotData AS
(
    SELECT
    RecordId,
    QuestionText,
    Data
    FROM #PrePivot
)
SELECT RecordId, [Completion Date], [Gender],[PreCourse Info], [Application Process]
FROM PivotData
PIVOT( MAX(Data)FOR QuestionText IN ([Completion Date], [Gender],[PreCourse Info], [Application Process])) AS P;

两点评论:

  1. 您必须显式指定要在输出中看到的列列表。
  2. 您必须使用一些聚合函数。但是,我们实际上不想在这里计算任何聚合。相反,我们只想显示数据列的内容。这就是我使用MAX函数的原因。假设对于给定的记录 ID,"问题文本"列中没有重复项,它将起作用。

最新更新