Postgres将值转换为列

时间:2017-08-04 11:10:23

标签: sql postgresql

我有结构的postgres表:

|key| position |    date    |
|---|----------|------------|
| 1 |     5    | 2017-07-01 |
|---|----------|------------|
| 1 |     9    | 2017-07-02 |
|---|----------|------------|
| 2 |     4    | 2017-07-01 |
|---|----------|------------|
| 2 |     8    | 2017-07-02 |

但我需要以这样的格式获取所选数据:

| key | 2017-07-01 | 2017-07-02 |
|-----|------------|------------|
|  1  |      5     |      9     |
|-----|------------|------------|
|  2  |      4     |      8     |

我该怎么办?

1 个答案:

答案 0 :(得分:1)

如果每个键和每个日期有一行,则一种方式是条件聚合

select 
key,
min(case when date = '2017-07-01' then position end) as "2017-07-01",
min(case when date = '2017-07-02' then position end) as "2017-07-02"
from t
group by key