PostgreSQL 多行变一行

前端之家收集整理的这篇文章主要介绍了PostgreSQL 多行变一行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

实例表:

  1. postgres=# \d book2
  2. Table "public.book2"
  3. Column | Type | Modifiers
  4. --------+-------------------+----------------------------------------------------
  5. id | integer | not null default nextval('book2_id_seq'::regclass)
  6. name | character varying |
  7. tag | character varying |
  1. postgres=# select * from book2;
  2. id | name | tag
  3. ----+------+-----
  4. 1 | java | aa
  5. 1 | java | bb
  6. 1 | java | cc
  7. 2 | C++ | dd
  8. 2 | C++ | ee
  9. (5 rows)
需要的效果
  1. name | string_agg
  2. ------+------------
  3. C++ | dd,ee
  4. java | aa,bb,cc
  5. (2 rows)


方法1:string_agg(字段名,分隔符)
  1. postgres=# select name,string_agg(tag,',') from book2 group by name;
  2. name | string_agg
  3. ------+------------
  4. C++ | dd,cc
  5. (2 rows)


方法2:array_agg(字段名)

  1. postgres=# select name,array_agg(tag) from tb3 group by name;
  2. name | array_agg
  3. ------+------------
  4. c++ | {dd,ee}
  5. java | {aa,cc}
  6. (2 rows)<strong>
  7.  
  8. </strong>postgres=# select name,array_to_string(array_agg(tag),') from tb3 group by name;
  9. name | array_to_string
  10. ------+-----------------
  11. c++ | dd,cc
  12. (2 rows)

猜你在找的Postgre SQL相关文章