我有三列,每列都是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操作符,那将非常感激。
感谢您的时间
威尔
答案 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;
两条评论:
MAX
函数的原因。它将起作用,假设对于给定的 RecordId , QuestionText 列中没有重复项。