使用子查询 oracle sql 进行数据透视

Posted

技术标签:

【中文标题】使用子查询 oracle sql 进行数据透视【英文标题】:Pivot with subquery oracle sql 【发布时间】:2014-09-25 04:24:44 【问题描述】:

我正在尝试使用 pivot 来显示我的信息。我想使用子查询来选择报告中的列:

select * from 
(select continent, country, population
 from continents, countries
 where continents.id=countries.id
 )
 pivot (sum(population) for country in (select distinct country from countries)

当我尝试使用子查询获取国家/地区列表时,我不断收到错误消息。

我尝试使用数据透视 XML,但这也不起作用,因为它返回了无意义的 xml 代码。 我想看看实际数字!

【问题讨论】:

你好。您可以发布您的表格结构和一些示例数据吗?另外请尝试使用 ANSI-92 JOIN 语法而不是 ANSI-89。 流水线函数 (oracle-base.com/articles/misc/pipelined-table-functions.php) 【参考方案1】:

您不能在 PIVOT 子句中使用子查询的结果,因为列需要静态定义。但是您可以使用子查询的结果生成动态 SQL,然后通过立即执行来执行它。

【讨论】:

以上是关于使用子查询 oracle sql 进行数据透视的主要内容,如果未能解决你的问题,请参考以下文章

使用 Sql Developer Oracle 的动态数据透视查询

Oracle SQL 数据透视查询

Oracle SQL 数据透视查询

在 Oracle SQL 中将数据透视表转换为平面表

如何在 oracle 数据库中为具有复杂聚合的数据透视编写等效的 sql 查询?

列子句中带有子查询的 MS SQL Server 数据透视表