【问题标题】:Oracle SQL group by queries, Kind of PIVOT [duplicate]Oracle SQL group by 查询,一种 PIVOT [重复]
【发布时间】: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?

标签: sql oracle string-aggregation


【解决方案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
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-09-22
  • 2014-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
相关资源
最近更新 更多