Postgres生成一系列列

达琳

我有几张桌子

表格1:

meter_id  |    date 
    1       2019-01-01

表2:

meter_id  |  read_date   |  period   |  read   
   1         2019-01-01       1          5
   1         2019-01-01       2          6
   1         2019-01-01       5          2
   1         2019-01-01       6          1
   1         2019-01-01       7          2
   2         2019-01-01       1          3
   2         2019-01-01       2          10
   1         2019-01-02       6          7

是否有可能生成一系列列,所以我最终得到这样的结果:

meter_id  |  read_date  |  p_1  |  p_2   |  p_3  |  p_4  |  p_5  |  p_6   ...
   1         2019-01-01     5       6                        2       1
   2         2019-01-01     3       10     
   1         2019-01-02                                              7     

每天(每半小时)读取48次

不必执行多个选择语句?

戈登·利诺夫

您可以使用条件聚合:

select t1.meter_id, t1.date,
       max(t2.read) filter (where period = 1) as p_1,
       max(t2.read) filter (where period = 2) as p_2,
       max(t2.read) filter (where period = 3) as p_3,
       . . .
from table1 t1 join
     table2 t2
     on t1.meter_id = t2.meter_id and t1.date = t2.read_date
group by t1.meter_id, t1.date;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章