我有一个列,其值如下
select chipset_name from chipset
chipset_name
"Chip A,Chip B"
"Chip A"
"Chip F"
"DSOG K"
"FROW 01 33"
"Chip F,DSOG K"
...我想将它聚合到一行,而不重复,但是如果我使用string_agg(distinct..)我有复印机
select string_agg(distinct chipset_labels,',')from chipset
----------
Chip A,Chip B,**Chip A**,Chip F,DSOG K,FROW 01 33,Chip F,**DSOG K**如何解析和删除重复项?
谢谢
发布于 2016-07-20 12:48:09
函数string_to_array(chipset_name, ',')将将名称转换为数组。然后对它们进行unnest并只选择不同的值。
select distinct token
from
chipset,
unnest(string_to_array(chipset_name, ',')) token
token
------------
Chip A
Chip B
Chip F
DSOG K
FROW 01 33
(5 rows) 发布于 2016-07-20 12:53:55
regexp_split_to_table不需要取消嵌套:
select string_agg(distinct cl, ',')
from
chipset,
regexp_split_to_table(chipset_labels, ',') cl(cl)
;
string_agg
----------------------------------------
Chip A,Chip B,Chip F,DSOG K,FROW 01 33https://stackoverflow.com/questions/38481535
复制相似问题