一尘不染

Postgres简单的“数据透视表”表

sql

如果我有这样的数据表

name   |   type   |  count

test   | blue     |  6
test2  | red      |  3
test   | red      |  4

我如何查询它以获得表:

name  |  num_red  | num_blue

test  | 4         | 6
test2 | 3         | 0

我当然可以选择count(*),其中type = blue等,但是我想不起来如何在这样的一个查询中计算多个类型。

谢谢!


阅读 203

收藏
2021-03-08

共1个答案

一尘不染

您可以CASE在select子句中使用。

SELECT  name,
        SUM(CASE WHEN type = 'red' THEN "count" ELSE 0 END) numred,
        SUM(CASE WHEN type = 'blue' THEN "count" ELSE 0 END) numblue
FROM tableName
GROUP BY name

SQLFiddle演示

2021-03-08