如何在Postgres中旋转多个列

时间:2019-05-24 09:01:06

标签: postgresql pivot crosstab

我在Postgres中有一张表格,希望从2列从宽到长。

数据源太大,无法使用Python,因为这将需要加载到内存中。 Postgres中是否有一个功能可以做到这一点?

下面是桌子的样子...

date        a1_on_time      a1_days b2_on_time  b2_days
15-Apr-19   TRUE            1       TRUE        1
26-Apr-19   TRUE            2       FALSE       6

输出应如下所示:

date        metric   on_time   days
15-Apr-19   a1       TRUE      1
26-Apr-19   a1       TRUE      2
15-Apr-19   b2       TRUE      1
26-Apr-19   b2       FALSE     6

任何想法都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

使用联合查询:

select date, 'a1' as metric, a1_on_time as on_time, a1_days as days from your_table
union all
select date, 'b2', b2_on_time, b2_days from your_table
order by metric, date;