2017-12-27 137 views
2

在Oracle SQL查詢中我們得到了40個記錄具有13列。我想合併所有這些記錄到一列意味着40 * 13 = 520列在1記錄。其EG-樣品表記錄數在Oracle中將具有多列的多行轉換爲一個記錄

col1 col2 city cntry conti 
1  abc NYC USA NA 
2  def LON UK  EU 
3  xyz DUB UAE ASIA 

再經過合併所有記錄&進入一個記錄,那麼它應該像下面的單

col1 col2 city cntry conti col1 col2 city cntry conti col1 col2 city cntry conti 
1  abc NYC USA NA  2  def LON UK  EU  3  xyz DUB UAE ASIA 
+0

Oracle對單個記錄中的字節數有限制。您的數據可能不適合放在一行上。 –

+0

@GordonLinoff你能提供一個對這個限制的參考嗎?我[可以找到](https://docs.oracle.com/en/database/oracle/oracle-database/12.2/refrn/logical-database-limits.html#GUID-685230CF-63F5-4C5A-B8B0-037C566BDA76)只有每個表的列的限制。 –

+0

「行的固定長度列的最大累積長度(字節)= 32,768」,https://docs.oracle.com/cd/E11882_01/timesten.112/e21643/limit.htm#TTREF456。 –

回答

2

如果列col1包含唯一值那麼你可以使用pivot

select * 
    from t 
    pivot (max(col1) col1, max(col2) col2, max(city) city, max(cntry), max(conti) conti 
     for col1 in (1, 2, 3)) 

SQLFiddle demo

+0

可以用1條記錄中的40 * 13 = 420列來做 – user8487380

+0

[是](http://sqlfiddle.com/#!4/83b2cd/247)。 –

+1

@PonderStibbons可以在Oracle 10g上執行,因爲在Oracle 10g中沒有任何受支持的WITH子句。沒有WITH子句可以合併? –