Sql 文本透视表
我所做的是基于以下回应: 我有一张像这样的桌子Sql 文本透视表,sql,sql-server-2008,pivot,Sql,Sql Server 2008,Pivot,我所做的是基于以下回应: 我有一张像这样的桌子 InterviewID | QuestionNumber | PerformanceRatingComments 1 | 1 | Text1 1 | 2 | Text2 2 | 1 | Text3 2 | 2 | Text4
InterviewID | QuestionNumber | PerformanceRatingComments
1 | 1 | Text1
1 | 2 | Text2
2 | 1 | Text3
2 | 2 | Text4
2 | 3 | Text3
2 | 4 | Text4
我想看到的是一张显示
InterviewID | Q1PerfComments | Q2PerfComments | Q3PerfComments | Q4PerfComments.
我试过这个:
Select InterviewID,
pt.[1] as Q1PerfComments,
pt.[2] as Q2PerfComments,
pt.[3] as Q3PerfComments,
pt.[4] as Q4PerfComments
FROM
(
select InterviewID, QuestionNumber, PerformanceRatingComments
from myTable
WHERE
PerformanceRatingComments IS NOT NULL
and QuestionNumber >=1
And QuestionNumber <=4
) As Temp
PIVOT
(
max(PerformanceRatingComments)
FOR QuestionNumber In([1], [2], [3], [4])
) As pt
我收到一个错误,上面写着:
操作数数据类型文本对于max运算符无效
我错过了什么 根据错误消息: 操作数数据类型文本对于max运算符无效 不能将聚合函数应用于文本数据类型。我的建议是在透视数据之前将PerformanceRatingComments转换为varcharmax:
Select InterviewID,
pt.[1] as Q1PerfComments,
pt.[2] as Q2PerfComments,
pt.[3] as Q3PerfComments,
pt.[4] as Q4PerfComments
FROM
(
select InterviewID, QuestionNumber,
cast(PerformanceRatingComments as varchar(max)) PerformanceRatingComments
from myTable
WHERE PerformanceRatingComments IS NOT NULL
and QuestionNumber >=1
And QuestionNumber <=4
) As Temp
PIVOT
(
max(PerformanceRatingComments)
FOR QuestionNumber In([1], [2], [3], [4])
) As pt;
看