SQL Pivot有很多记录,字符串数据

时间:2016-01-26 11:59:24

标签: sql-server pivot

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

我曾尝试使用pivot运算符,但我在使用字符串数据时遇到了问题。

表示例:

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

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

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

我在阅读了一些帖子之后尝试了以下内容:

SELECT *
FROM 
(
   SELECT 
       RecordId
      ,QuestionText
      ,Data

    FROM #PrePivot
) AS P
PIVOT
(
Data FOR QuestionText 
)   AS Pvt

如果您可以告知我的代码中是否缺少某些内容,或者最好不使用pivot操作符,那将非常感激。

感谢您的时间

威尔

1 个答案:

答案 0 :(得分:0)

试试这个:

;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. 您必须使用一些聚合功能。但是,我们实际上并不想在这里计算任何聚合。相反,我们只想显示 Data 列的内容。这就是我使用MAX函数的原因。它将起作用,假设对于给定的 RecordId QuestionText 列中没有重复项。