2013-04-09 116 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