如何将下面的sql 修改,查询的结果 DECLARE_CRITERION_NAME 多个结果拼接成一行 显示 SELECT rel.COMPLEX_CODE_TS, rel.DECLARE_CRITERION_NAME FROM CUSTOMS_COMPLEX_CRITERION_REL rel WHERE rel.DELETED = 0 AND rel.CUSTOMS_DISTRICT_CODE = 2200 AND rel.COMPLEX_CODE_TS = 9507900000
时间: 2023-11-15 16:04:26 浏览: 74
要将 `DECLARE_CRITERION_NAME` 的多个结果拼接成一行,你可以使用 `LISTAGG` 函数来实现。`LISTAGG` 函数用于将行中的值连接为一个字符串,并可以指定连接符。
以下是修改后的 SQL 查询:
```sql
SELECT rel.COMPLEX_CODE_TS,
LISTAGG(rel.DECLARE_CRITERION_NAME, ',') WITHIN GROUP (ORDER BY rel.DECLARE_CRITERION_NAME) AS DECL_CRITERION_NAMES
FROM CUSTOMS_COMPLEX_CRITERION_REL rel
WHERE rel.DELETED = 0
AND rel.CUSTOMS_DISTRICT_CODE = 2200
AND rel.COMPLEX_CODE_TS = 9507900000
GROUP BY rel.COMPLEX_CODE_TS;
```
在上面的查询中,我们使用 `LISTAGG` 函数将 `DECLARE_CRITERION_NAME` 列的多个结果拼接成一个字符串,并使用逗号作为连接符。我们还使用 `GROUP BY` 子句来按照 `COMPLEX_CODE_TS` 进行分组。
注意:如果拼接后的字符串长度超过了数据库限制,可能会导致错误。在这种情况下,你可能需要考虑缩短结果字符串或使用其他方法来处理。
阅读全文