微软 SQL 服务器 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
进行聚合。
其次,您需要用方括号而不是单引号将 $row1
等括起来。
第三,我将为 as pivot
使用不同的别名
结果代码将是:
select *
from
(
select name, propertyvalue, displayname
from indexrows
) a
pivot
(
max(propertyvalue)
for [displayname] in ([$row1], [$row2], [$row3])
) piv;
关于sql - 使用带有 SQL 的数据透视表将一些列转置为行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17458894/