Postgres简单的'枢轴'表

时间:2012-10-17 17:16:52

标签: sql postgresql

如果我有这样的数据表

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等,但我想不出如何在一个查询中计算多个类型,如下所示。

谢谢!

1 个答案:

答案 0 :(得分:5)

您可以在select子句中使用CASE

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 Demo