1. 程式人生 > 其它 >Oracle查詢,將某列查詢結果用逗號隔開,拼接成一行(listagg函式)

Oracle查詢,將某列查詢結果用逗號隔開,拼接成一行(listagg函式)

需求:Oracle資料庫,通過查詢,將查詢欄位的該列結果用逗號拼接成一行。


1. 查詢語法

select listagg('欄位',',') within group (order by '欄位') as '欄位'
  from 表名 where 條件

2. 示例對比:

2.1 原始查詢結果

select emp_uid from PRS_CALC_DATA where agency_code='101002' and prtype_code='002'

2.2 用listagg函式查詢之後的結果

select listagg(emp_uid,',') within group (order by emp_uid) as
emp_uid from PRS_CALC_DATA where agency_code='101002' and prtype_code='002'

3. 應用

  給100個人計算工資,計算的後臺介面統計的是工資編制表中每個人員對應的id值,故需要將該id值查詢出來傳給計算介面。實現如下:

3.1 查詢語句

3.2 提取查詢結果

3.3 傳入查詢結果 

3.4 檢視結果

*****************************************************************************************************************************************************************************************************************

如果不使用listagg函式,會只計算一個人的工資(因為只傳入了一個id值)。示例如下:

*****************************************************************************************************************************************************************************************************************