3

如果我有这样的数据表

name   |   type   |  count

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

我如何查询它以获得一张表:

name  |  num_red  | num_blue

test  | 4         | 6
test2 | 3         | 0

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

谢谢!

4

1 回答 1

5

您可以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 演示

于 2012-10-17T17:18:39.890 回答