2017-03-21 14 views
1

データのクエリに関する質問があります。私はこのフォーマットmysqlは値に基づいて列を表示します

item red blue 
card 2 2 
light 1 1 
cup  2 0 

に次のデータ

id item color 
1 card red 
2 card red 
3 card blue 
4 card blue 
5 light red 
6 light blue 
7 light yellow 
8 cup red 
9 cup red 
10 cup blue 

から特定の販売アイテムの色(赤と青)とそのカウントを取得したいとき、私はこのことから始めました。

select item ,color, count(*) from shops where color in ('red','blue') group by item , color 

しかし、私は "赤"、 "青"を2列に分けようとしました。私はそれをどうやって行うのか分かりません。私は誰かがこの問題のためのいくつかのキーワードや指示を与えることができれば感謝します。

答えて

3

あなたは、この使用することができますよう

SELECT item, 
    SUM(CASE WHEN color = 'red' THEN 1 ELSE 0 END) AS red, 
    SUM(CASE WHEN color = 'blue' THEN 1 ELSE 0 END) AS blue 
FROM table_name 
GROUP BY item; 
0

その中の場合と、2つのカウントで試してみてください:

select item, 
     count(case when color = 'red' then item end) as red, 
     count(case when color = 'blue' then item end) as blue 
from shops 
group by item 
+1

おそらく合計(色= '赤'、その後、他の1つの0エンドケース)赤 –

+0

色が赤の場合と同じカウント項目ではない場合はnull、そうでない場合はnullですか?ヌルは0としてカウントされます –

関連する問題