3

そのようなデータのテーブルがある場合

name   |   type   |  count

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

テーブルを取得するようにクエリするにはどうすればよいですか。

name  |  num_red  | num_blue

test  | 4         | 6
test2 | 3         | 0

もちろん、type = blueなどのcount(*)を選択することはできますが、このように1つのクエリ内で複数のタイプをカウントする方法を考えることはできません。

ありがとう!

4

1 に答える 1

5

CASEselect句で使用できます。

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 に答える