postgresql无法创建具有伪类型记录的表[]

时间:2017-06-08 18:10:38

标签: sql postgresql

我有一个SQL语句,它可以100%正常运行并返回我需要的内容。

select t1.*,sg.shape from species_geom sg join 
    (select sg.linkid,array_agg((st.nj_status,st.fed_status)) species
        from species_geom sg join species_table st 
            on sg.linkid = st.linkid
            group by sg.linkid)t1
    on sg.linkid=t1.linkid

但是,当我尝试使用查询创建一个表时,它会给我这个错误

ERROR:  column "species" has pseudo-type record[]
********** Error **********

ERROR: column "species" has pseudo-type record[]
SQL state: 42P16

有人可以给我一个很好的解释,为什么我不能创建这个表以及如何解决这个问题

ps *我使用create table species2 as作为我的创建表语句

1 个答案:

答案 0 :(得分:2)

对于一直在寻找相同错误的答案的其他人,例如@ziggy提到将数组转换为文本的作品。

下面是遇到相同错误时我用来创建视图的代码段

    select * ,  
    case when foo > 0 
    then (case when bar > 0 then 'bar'end,
          case when bar1 > 0 then 'bar1'end,
          case when bar2 > 0 then 'bar2' end)   
    else NULL end :: varchar as result,
from table1;

这将在一列中提供输出((bar,bar1,bar2)。