2017-03-23 53 views
1

我有一個查詢,它提供了在所有城市中加入個月明智員工的數量。 (在MySQL)將行轉置爲列MySQL

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

輸出的格式如下 -

| 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

可以使用條件彙總:

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) 

它使用的事實,真正的計算結果爲1個假評估爲0在MySQL中,你可以歸納找到所需要的計數。

+0

謝謝@ GurV,當城市名單不知道的情景如何?這意味着它不是一個有限的列表。 – Chaitanya

+0

@Chaitanya - 在這種情況下,建議在應用程序代碼中處理這個問題。另一種(醜陋的)方式是使用動態SQL。 – GurV

+0

是有道理的推動邏輯到循環等應用程序更簡單。謝謝! – Chaitanya