使用带有 SQL 的数据透视表将一些列转置为行

2023-12-07

微软 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(使用前将#替换为@)

使用带有 SQL 的数据透视表将一些列转置为行 的相关文章

随机推荐