我在SQL 2k12上并且遇到了PIVOT命令。 我的数据看起来像这样
我需要像这样的输出
DimQuestion_y_attribute [Q42] [Q13] [Q23]
Q14 0.574 0.508 0.403
Q24 0.117 0.19 0.111
我正在使用的查询是
select DimQuestionNum_y_Attribute, [Q42],[Q13],[Q23]
from [dbo].[Pearson_Coefficient_Values]
PIVOT
(
SUM(coeff_value) For DimQuestionNum_x_Rating IN ([Q42],[Q13],[Q23])
) p
where surveyid = 1109245
我看到的输出是
current output does not match requirements
我做错了什么?
答案 0 :(得分:1)
作为PIVOT的替代品,你可能想尝试SUM(CASE)
,在某些情况下,你会获得更好的表现。
SELECT DimQuestionNum_y_Attribute,
SUM(CASE WHEN DimQuestionNum_x_Rating = 'Q42' THEN coeff_value END) [Q42],
SUM(CASE WHEN DimQuestionNum_x_Rating = 'Q13' THEN coeff_value END) [Q13],
SUM(CASE WHEN DimQuestionNum_x_Rating = 'Q23' THEN coeff_value END) [Q23]
FROM [dbo].[Pearson_Coefficient_Values]
WHERE surveyid = 1109245
GROUP BY DimQuestionNum_y_Attribute
答案 1 :(得分:0)
试试这个
select DimQuestionNum_y_Attribute, [Q42],[Q13],[Q23]
from (select DimQuestionNum_y_Attribute,coeff_value, DimQuestionNum_x_Rating from [dbo].[Pearson_Coefficient_Values] where surveyid = 1109245) tb
PIVOT
(
SUM(coeff_value) For DimQuestionNum_x_Rating IN ([Q42],[Q13],[Q23])
) p