将两个SQL列交叉到成对数组中

时间:2014-11-18 16:20:37

标签: sql postgresql-9.3

我试图将两个SQL列交错到成对数组中。 我该怎么做:

id         key      val
---        ---      ---             
1          a        apple
1          b        boy
2          x        xray
2          y        yellow

进入这个:

new_id         array    
---        ---             
1          {a,apple},{b,boy}
2          {x,xray},{y,yellow}

1 个答案:

答案 0 :(得分:0)

此解决方案非常特定于此案例(即每id个2项),因此可能不够,但它确实适用于您的情况:

select 
   id
   , ARRAY[min(kv), max(kv)] 
from 
   (select 
    id
    , ARRAY[key, val] kv from fruit
   ) s 
group by 
  id 
order by 
  id;

┌────┬───────────────────────┐
│ id │         array         │
├────┼───────────────────────┤
│ 1  │ {{a,apple},{b,boy}}   │
│ 2  │ {{x,xray},{y,yellow}} │
└────┴───────────────────────┘
(2 rows)