gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:39:59 25 4
gpt4 key购买 nike

微软 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 Fiddle with Demo

关于sql - 使用带有 SQL 的数据透视表将一些列转置为行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17458894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com