【问题标题】:convert rows to string in postgresql在postgresql中将行转换为字符串
【发布时间】:2014-02-26 20:41:44
【问题描述】:

表名是t1。字段名称为name1。 name1 有这样的值

-------------------------------------------+
+       name1                              +
--------------------------------------------
|    "a_2013,AcMaster,Master"              |
|   "b_2014,AcMaster,Master"               |
|   "c_2013,a_AcMaster,a_Master"           |
|    "d_2014,a_AcMaster,a_Master"          |
|__________________________________________|

但我想得到这样的结果

  master          acmaster               text
   Master          AcMaster                a_2013,b_2014
   a_Master        a_Master                c_2013,d_2014

所以我尝试这样

    select (string_to_array(schemaname,',')) [3] as master,(string_to_array(schemaname,','))
 [2] as acmaster,(string_to_array(schemaname,',')) [1] from appsetup.company2 
c2,appsetup.company1 c1,appsetup.companygroup cg where    c1.compno=c2.compno and 
cg.compgroupno=c1.compgroupno and c1.compno in (3,2) group by 
string_to_array(schemaname,',')) [3],
(string_to_array(schemaname,',')) [2],cg.compgroupno,schemaname order by 
cg.compgroupno

但它的回报

master          acmaster               text
   Master          AcMaster              ["a_2013","b_2014"]
   a_Master        a_Master              ["c_2013","d_2014"]

如何得到我想要的结果?

我正在使用 Postgresql 9.3

【问题讨论】:

    标签: sql postgresql postgresql-9.3


    【解决方案1】:

    你可以试试这个:

    select string_agg(name1, ',') as Name1s
    from t1
    

    string_agg

    【讨论】:

    • 如果您要聚合的列类型不是文本,则需要添加类型转换:select string_agg(name1::text, ',') as Name1s from t1
    猜你喜欢
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    相关资源
    最近更新 更多