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
。
其次,您需要$row1
用方括号而不是单引号将。等括起来。
第三,我将为 as pivot
结果,代码将是:
select *
from
(
select name, propertyvalue, displayname
from indexrows
) a
pivot
(
max(propertyvalue)
for [displayname] in ([$row1], [$row2], [$row3])
) piv;
参见带有演示的SQL Fiddle
问题内容: 我已经阅读了MS数据透视表上的内容,但在获得正确答案方面仍然遇到问题。 我有一个正在创建的临时表,我们会说第1列是商店编号,第2列是星期编号,最后第3列是某种类型的总数。同样,周号是动态的,商店号是静态的。 我希望将其作为数据透视表发布,如下所示: 将数字存储在侧面,数周存储在顶部。 问题答案: 如果使用的是SQL Server 2005+,则可以使用该函数将数据从行转换为列。 听起来
问题内容: 我正在使用Oracle 12c R1 db并具有以下示例数据的示例视图: 视图名称: CUST_HOTEL_VIEW 从上面的数据中,我试图通过Row Grand Total,Column Grand Total和每位客户预订的酒店数量低于数据透视表的输出: 我尝试在下面的查询中生成数据透视表 我想知道: 1.如何包括行总计 2.如何包括列总计 3.如何包括预订酒店的数量以及 3.是否
我有两个表:Person(person_id,name)和另一个表Contacts(person_id,phone_type,phone_no)。 例如,contacts表的行被透视以形成视图的列(列的数量将根据'phone_types'列的不同值而变化)。 有什么方法可以透视contacts表,但使用动态pivot-in-sublic,类似
问题内容: 我正在尝试从三个表生成数据透视图: 学生 费用 stud_fee(关系表) 表格: 我想把费用作为专栏,学生作为行。我想使其显示为: 问题答案: 看起来您想转换成几列的费用可能未知,如果是这种情况,那么您将需要使用准备好的语句来查询以下内容: 参见带有演示的SQL Fiddle
问题内容: 我想从Table1转换数据,如您在数据透视表中的第一张图片上所见。在MySQL中可以做到吗?因为数据透视表(A,B,C,D)的值是varchar数据格式,所以我不能使用MySQL的任何聚合函数(例如SUM或其他函数)。 谢谢你的帮助 问题答案: 静态查询(就Bob和Sue而言)可能看起来像这样 现在可以使用动态SQL来解释其他名称 输出: 这是 SQLFiddle 演示 您可以将其包装
问题内容: 我正在使用SQL Server 2008,并且希望将数据转换为: 资料集: 所需结果: 目前,我正在执行以下操作,然后将所需的列粘贴到Excel中: 但是,并非所有匹配的行都不能仅仅并排击打表。对于没有Result的列,我希望显示NULL来填充行以使它们都具有相同数量的记录。 我查了一下PIVOT,但我认为这在这里不起作用…这种数据转换称为什么类型?我不认为这是交叉表… 谢谢! 问题答