MS SQL Server 2012
我有一个名为 indexrows* 的表 *
name displayname propertyvalue abc $row1 agg abc $row2 spx abc $row3 qqq def $row1 spx def $row2 qqq
我想将这些结果转换为如下形式。
name $row1 $row2 $row3 abc agg spx qqq def spx qqq
我尝试了以下查询,但未成功。我得到这个错误
消息156,级别15,状态1,第10行关键字“ for”附近的语法错误。
select * from ( select name,propertyvalue, displayname from indexrows ) a PIVOT ( propertyvalue for [displayname] in ('$row1', '$row2', '$row3') ) as pivot
任何帮助表示赞赏。
您的查询有些错误。
首先,您在PIVOT上缺少聚合函数。您需要一个汇总propertyvalue。
propertyvalue
其次,您需要$row1用方括号而不是单引号将。等括起来。
$row1
第三,我将为 as pivot
as pivot
结果,代码将是:
select * from ( select name, propertyvalue, displayname from indexrows ) a pivot ( max(propertyvalue) for [displayname] in ([$row1], [$row2], [$row3]) ) piv;