2017-03-23 12 views
1

私はすべての都市で月別に従業員数をカウントするクエリを提供しています。出力はこのフォーマットである行を列に転記するMySQL

SELECT SUBSTR(`JoiningDate`,4,3) as Month, 
Location, 
Count(*) as `EmployeeCount` 
FROM `data` 
WHERE Location IN ('NYC','SFO','LA') 
GROUP BY Month,Location 

(MySQLでは) -

| Month|Location| Count| 
----------------------- 
| Jan | NYC | 100| 
| Jan | SFO | 500| 
| Jan | LA  | 200| 
| Feb | NYC | 100| 
| Feb | SFO | 400| 
| Feb | LA  | 500| 

どのように私は形式のデータを移調することができるだろう、それは月額関連のカウントと各都市の列を生成しますか?以下のような何か -

| Month|NYC |SFO | LA | 
----------------------- 
| Jan |100 |500 |200 | 

| Feb |100 |400 |500 | 

| Mar |300 |300 |650 | 

答えて

0

あなたは条件付き集計使用することができます:それは本当のあなたが必要な数を見つけるために合計することができMySQLで0に1、falseと評価と評価されているという事実を使用しています

select SUBSTR(`JoiningDate`, 4, 3) as Month, 
    sum(location = 'NYC') as `NYC`, 
    sum(location = 'SFO') as `SFO`, 
    sum(location = 'LA') as `LA` 
from `data` 
where Location in ('NYC', 'SFO', 'LA') 
group by SUBSTR(`JoiningDate`, 4, 3) 

を。

+0

ありがとう@ GurV、都市のリストがわからない場合のシナリオについてはどうですか?それは有限リストではありません。 – Chaitanya

+0

@Chaitanya - その場合、これをアプリケーションコードで処理することをお勧めします。別の(醜い)方法は、動的SQLを使用することです。 – GurV

+0

うまくいけば、ロジックをループなどの簡単なアプリケーションにプッシュすることができます。ありがとう! – Chaitanya