Oracle SQL group by 查询,一种 PIVOT [重复]
Posted
技术标签:
【中文标题】Oracle SQL group by 查询,一种 PIVOT [重复]【英文标题】:Oracle SQL group by queries, Kind of PIVOT [duplicate] 【发布时间】:2013-04-09 17:46:09 【问题描述】:到目前为止,我还不需要发布查询,几乎所有内容都可用。这是我的第一个问题。
我有不同的要求,我有下面的表名说 alarmdb
------------------INT_ID-------------- ------------------------- ALARM_NUMBER------------------------ ----
101212121 7762
101212121 8212
101212121 3423
101313131 7734
101313131 7743
基本上是一种分组和旋转。最终输出可以是这样的。
------------------INT_ID-------------- ------------------------- ALARM_NUMBER------------------------ ----
101212121 7762,8212,3423
101313131 7734,7743
将许多单元格数据压缩为一个。
谁能推荐一下。
【问题讨论】:
什么版本的oracle? 【参考方案1】:根据您的 Oracle 版本,您有不同的选择。
对于 Oracle 11g+,您可以使用 LISTAGG
:
select int_id,
listagg(alarm_number, ', ') within group (order by int_id) as alarm_number
from yourtable
group by int_id;
见SQL Fiddle with Demo
或者您可以将wm_concat()
用于早期版本:
select int_id,
wm_concat(alarm_number) as alarm_number
from yourtable
group by int_id
【讨论】:
WM_CONCAT() 不是文档化函数,因此不应在生产代码中依赖。 你能告诉我如何使用,我猜不支持 wm_concat,我发布以下版本。 Oracle 数据库 10g 企业版版本 10.2.0.5.0 - 64bi PL/SQL 版本 10.2.0.5.0 - 适用于 Linux 的生产“CORE 10.2.0.5.0 生产”TNS:版本 10.2.0.5。 0 - 生产 NLSRTL 版本 10.2.0.5.0 - 生产 @ChandraSekhar 我建议查看以下页面,其中显示了一些有关如何在 Oracle 10g 中执行此操作的示例 -- oracle-base.com/articles/misc/string-aggregation-techniques.php以上是关于Oracle SQL group by 查询,一种 PIVOT [重复]的主要内容,如果未能解决你的问题,请参考以下文章
ORACLE 中使用 GROUP BY 和 HAVING COUNT(condition) 的 SQL 查询
oracle查询选择语句——count、sum、order by、group by