2013-04-09 84 views
1

到目前为止,我还没有必要发布查询,几乎所有东西都可用。这是我的第一个问题。Oracle SQL组查询,种类PIVOT

我有不同的要求,我有如下表名说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 

将许多单元格数据收缩为一个。

任何人都可以请建议。

+1

甲骨文的版本? – Taryn 2013-04-09 17:46:37

回答

2

根据您的Oracle版本,您有不同的选项。

可以使用LISTAGG为的Oracle 11g +:

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 
+0

WM_CONCAT()不是一个文档化的函数,所以不应该依赖于生产代码。 – APC 2013-04-10 05:55:08

+0

可以请你告诉我如何使用,wm_concat不支持我猜,我张贴下面的版本。 – 2013-04-11 05:07:35

+0

Oracle数据库10g企业版发布10.2.0.5.0 - 64bi PL/SQL发布10.2.0.5.0 - 生产 “核心\t 10.2.0.5.0 \t生产” TNS版:10.2.0.5.0版本 - 生产 NLSRTL版本10.2.0.5.0 - 生产 – 2013-04-11 05:07:57