我有三列,每列都是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;
两点评论:
- 您必须显式指定要在输出中看到的列列表。
- 您必须使用一些聚合函数。但是,我们实际上不想在这里计算任何聚合。相反,我们只想显示数据列的内容。这就是我使用
MAX
函数的原因。假设对于给定的记录 ID,"问题文本"列中没有重复项,它将起作用。