2013-03-16 24 views
2

我已經構建了一個使用BREAK ON命令停止重複字段名輸出的命令。例如:當使用BREAK ON命令時連接字段

f.name | f.value 
f.name | f.value 
f.name | f.value 

變爲:

f.name | f.value 
     | f.value 
     | f.value 

有什麼辦法有這樣的輸出:有有超過20架F

f.name | f.value,f.value,f.value 

在某些情況下,f.name領域。與之相關的價值。

輸出將最終用於導入到其他地方,所以我試圖使輸出儘可能友好。

回答

2

你不是在尋找一個SQL * Plus命令,你正在尋找一個字符串聚合。

假設你當前的查詢是:

select name, value from my_table 

可以按如下得到你想要的結果改變它。包含DISTINCT是爲了消除列表中的重複結果。

select name, listagg(value, ', ') within group (order by value) as value 
    from (select distinct name, value from my_table) 
group by name 

LISTAGG()只發布了11.2,如果你使用的是Oracle的早期版本,你可以使用在this useful page on string aggregation techniques列出的未公開的函數WM_CONCAT()或用戶定義的函數STRAGG()。

+0

太棒了!非常感謝您的回覆。我會放棄這一點。謝謝 – 2013-03-16 13:32:05

相關問題