SQL 旋转多个记录,字符串数据

SQL Pivot numerous records, string data

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

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

Table 示例:

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

对上面的裤子 table 布局表示歉意。

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

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

SELECT *
FROM 
(
   SELECT 
       RecordId
      ,QuestionText
      ,Data

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

如果您能告诉我我的代码中是否缺少某些东西,或者最好不要使用数据透视运算符,我们将不胜感激。

感谢您的宝贵时间

试试这个:

;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 列中没有重复项,它将起作用。