可以讓Oracle做聚合爲你
甲骨文11
SELECT DEPARTMENT_ID_FK,
LISTAGG(EMAIL_ADDRESS, ',')
WITHIN GROUP (ORDER BY EMAIL_ADDRESS) AS EMAIL_ADDRESS
FROM table1
GROUP BY DEPARTMENT_ID_FK
甲骨文10
SELECT DEPARTMENT_ID_FK,
RTRIM(XMLAGG(XMLELEMENT(e, EMAIL_ADDRESS, ',')
ORDER BY EMAIL_ADDRESS).EXTRACT('//text()').GETCLOBVAL(), ',') AS EMAIL_ADDRESS
FROM table1
GROUP BY DEPARTMENT_ID_FK
這裏是一個dbfiddle演示了兩個詢問
結果:
DEPARTMENT_ID_FK | EMAIL_ADDRESS
-----------------+----------------------------
001 | [email protected],[email protected]
002 | [email protected]
-----------------+----------------------------
或者只是一對夫婦的循環PHP和條件
總
$agg = [];
while ($dData = oci_fetch_array($q)) {
$dep = $dData['DEPARTMENT_ID_FK'];
$email = $dData['EMAIL_ADDRESS'];
if (isset($agg[$dep])) {
$agg[$dep][] = $email;
continue;
}
$agg[$dep] = [$email];
}
$result = [];
foreach ($agg as $dep => $emails) {
$result[] = [
'DEPARTMENT_ID_FK' => $dep,
'EMAIL_ADDRESS' => implode(',', $emails),
];
}
print_r($result);
Demo
結果:
Array
(
[0] => Array
(
[DEPARTMENT_ID_FK] => 001
[EMAIL_ADDRESS] => [email protected],[email protected]
)
[1] => Array
(
[DEPARTMENT_ID_FK] => 002
[EMAIL_ADDRESS] => [email protected]
)
)
嗨peterm,感謝您的答案,但我得到的錯誤是這樣的:ORA-00923:FROM關鍵字未找到預期。我正在使用Toad –
您正在使用哪個版本的Oracle?你有沒有改變桌子的名字? – peterm
我使用的是Oracle 10.0.2.5,是的,我已更改了我的表名 –