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之Group by和Having-----转了

Oracle_group by分组查询_深入

oracle查询选择语句——count、sum、order by、group by

SQL 性能:SELECT DISTINCT 与 GROUP BY

oracle group by 查询 排序