postgresql:字符串累加拼接(聚合分组拼接) |
您所在的位置:网站首页 › sql字符串拼接空格 › postgresql:字符串累加拼接(聚合分组拼接) |
问题: 有时,想要将某字段在查询列表的时候,按分组的不同,同组字符串累加拼接起来。 原表数据内容如下: 想要达到的目标结果:是把cdate_tno的字符串分组累加拼接起来,如下: 解决方案: 使用聚合函数 string_agg,示例如下: SELECT string_agg(cdate_tno, ',')cdate_tno,arch_id FROM t_month_bill GROUP BY arch_id string_agg(cdate_tno, ',')中第一个参数是需要聚合拼接的字段名(或表达式),第二个参数是拼接间隔符号,这里用的是逗号。 如果聚合的时候想按排序添加,可以在第二个参数后面空格再加上order by 语句。如下: SELECT string_agg(cdate_tno, ',' order by cdate_tno)cdate_tno,arch_id FROM t_month_bill GROUP BY arch_id 关于出现“,,,,,,,,,” 的问题若聚合字段是空字符串时,聚合查询后会出现“,,,,,,,,”的字段的显示,这时就需要用case when将空字符串转为Null。 处理前 SELECT string_agg(case when cdate_tno!='' then cdate_tno else null end, ',' order by cdate_tno)cdate_tno,arch_id FROM t_month_bill GROUP BY arch_id 此处使用case when 将空字符串转为Null,处理后 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |