微软 SQL Server 2012
我有一张桌子叫索引行
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
.
其次,你需要包围$row1
等,用方括号而不是单引号。
第三,我会使用不同的别名as pivot
结果代码将是:
select *
from
(
select name, propertyvalue, displayname
from indexrows
) a
pivot
(
max(propertyvalue)
for [displayname] in ([$row1], [$row2], [$row3])
) piv;
See SQL 摆弄演示
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)