你firstname
柱似乎被定義爲nvarchar2
:
with t as (
select '2015SP.BOS.PPB.556.A'as course_id,
cast('Alissa' as nvarchar2(10)) as firstname
from dual
union all select '2015SP.BOS.PPB.556.A'as course_id,
cast('Dorothea' as nvarchar2(10)) as firstname
from dual
)
select course_id, listagg(firstname, ', ')
within group (order by course_id) as users
from t
group by course_id;
COURSE_ID USERS
-------------------- ------------------------------
2015SP.BOS.PPB.556.A
...我不能複製/粘貼從SQL Developer中的用戶無論是價值觀,但它顯示爲空格,你可以從SQL見*加:
COURSE_ID USERS
-------------------- ------------------------------
2015SP.BOS.PPB.556.A A l i s s a, D o r o t h e a
由於文件說,該listagg()
functi總是返回varchar2
(或raw
),因此傳入nvarchar2
值會導致隱式轉換,並將結果拋出。
如果你堅持該數據類型的塔中,你可以將它轉換爲varchar2
的listagg
調用內部:
column users format a30
with t as (
select '2015SP.BOS.PPB.556.A'as course_id,
cast('Alissa' as nvarchar2(10)) as firstname
from dual
union all select '2015SP.BOS.PPB.556.A'as course_id,
cast('Dorothea' as nvarchar2(10)) as firstname
from dual
)
select course_id, listagg(cast(firstname as varchar2(10)), ', ')
within group (order by course_id) as users
from t
group by course_id;
COURSE_ID USERS
-------------------- ------------------------------
2015SP.BOS.PPB.556.A Alissa, Dorothea
但你可能真的不希望它是nvarchar2
在所有。
你能告訴我們「格式奇怪」的含義嗎?你沒有得到什麼樣的預期產出? – ruudvan 2015-03-02 14:43:59
@ruudvan爲了清晰起見進行了編輯。 「USERS」列的字符在它們之間都有空格,當嘗試複製粘貼它時,不會複製該列中的任何數據。 – Cliff 2015-03-02 14:46:19
子查詢返回用戶的名字沒有空格? – Aramillo 2015-03-02 14:48:56