Postgres复杂的SQL查询

时间:2017-06-03 22:47:27

标签: sql postgresql

我正在努力解决一些复杂的问题。我并不确定如何在谷歌上查询以获得一些帮助...

我有一张像这样的表:

 Date      | period | meter   | value
2017-01-01 |    1   | meter01 | 1.12
2017-01-01 |    2   | meter01 | 2.12
.
.
2017-01-01 |    1   | meter02 | 0.12
2017-01-01 |    2   | meter02 | 7.12
.
.
2017-01-02 |    1   | meter01 | 2.12
2017-01-02 |    2   | meter01 | 4.12
.
.

任何指定日期都有48个期间。任何特定日期也可能有数百米。

我希望返回一个看起来像这样的结果:

 Date       |  Meter    |  Period 1 | Period 2 | Period 3 | Period 4
2017-01-01  |  meter01  |    1.24   |   2.12      
2017-01-01  |  meter02  |    2.24   |   3.12 

结果将给出每个仪表,日期和期间的总计,其中期间列是给定仪表,期间和日期的所有读数的总和。

1 个答案:

答案 0 :(得分:1)

一种方法是条件聚合:

select date, meter,
       sum(case when period = 1 then value end) as period_01,
       sum(case when period = 2 then value end) as period_02,
       sum(case when period = 3 then value end) as period_03,
       sum(case when period = 4 then value end) as period_04
from t
group by date, meter
order by date, meter;
相关问题