Oracle查詢,將某列查詢結果用逗號隔開,拼接成一行(listagg函式)
阿新 • • 發佈:2022-12-07
需求: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) asemp_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值)。示例如下:
*****************************************************************************************************************************************************************************************************************