我試圖在一行中連接選擇語句結果。
對於例如: 對於此選擇語句輸出:在具有行值的sql select語句中追加行號
Name
ABC
DEF
GHI
我需要以下輸出:
名稱
1 ABC, 2 DEF, 3 GHI
(平均值行數應在前面所附的每一行)
我我使用wm_concat()函數,但它給了我下面的O/P:ABC,DEF,GHI
任何人都可以幫忙嗎?
我試圖在一行中連接選擇語句結果。
對於例如: 對於此選擇語句輸出:在具有行值的sql select語句中追加行號
Name
ABC
DEF
GHI
我需要以下輸出:
名稱
1 ABC, 2 DEF, 3 GHI
(平均值行數應在前面所附的每一行)
我我使用wm_concat()函數,但它給了我下面的O/P:ABC,DEF,GHI
任何人都可以幫忙嗎?
這聽起來像你想要類似的東西。該listagg()
功能是在Oracle 11g中+可供選擇:
select listagg(cast(rownum as varchar2(20))||' '|| name, ', ')
within group (order by name) name
from yourtable
結果:
| NAME |
-----------------------
| 1 ABC, 2 DEF, 3 GHI |
如果你沒有的Oracle 11g,那麼你可以使用wm_concat()
:
select wm_concat(cast(rownum as varchar2(20))||' '|| name) name
from yourtable
另外你可以使用WITH子句:
WITH tmp AS
(
:your_select_statement
)
SELECT
LISTAGG(rownum || ' ' || :your_column, ', ')
WITHIN GROUP (ORDER BY :your_column) tmp
FROM tmp;
然後rownum從tmp臨時表中得到:your_select_statement的結果不是來自主表。
LISTAGG()僅在Oracle 11r2之後可用。 – APC
@apc正確他們沒有指定版本。如果不是oracle 11g,那麼可以使用wm_concat()。 – Taryn