2016-10-26 86 views
0

我想弄清楚如何計算所有總統,經理等,然後將列轉換爲一個查詢中的行。 比如有一些示例數據庫「員工」在這裏:http://www.mysqltutorial.org/tryit/ 我可以指望用這樣的查詢所有類型的員工:MySQL將列轉換爲列

SELECT 
    SUM(CASE 
     WHEN jobTitle = 'President' THEN 1 
     ELSE 0 
    END) AS 'Presidents', 
    SUM(CASE 
     WHEN jobTitle LIKE 'VP%' THEN 1 
     ELSE 0 
    END) AS 'VPs', 
    SUM(CASE 
     WHEN jobTitle LIKE '%Manager%' THEN 1 
     ELSE 0 
    END) AS 'Managers', 
    SUM(CASE 
     WHEN jobTitle LIKE '%Rep' THEN 1 
     ELSE 0 
    END) AS 'Reps' 
FROM 
employees; 

但現在我想列轉換爲行,我不知道如何將其包含在與此處的答案類似的查詢中: Mysql Convert Column to row (Pivot table) 你有什麼想法嗎?

+0

您有方法如何完成預期的輸出。你究竟在哪裏陷入了實施它的困境?此外,你應該對你如何制定你的問題更加小心,因爲你所問的問題可以通過簡單的「是」或「否」來回答。 – Shadow

+0

此外,我不明白爲什麼你想要取消上述查詢的結果,當你可以通過和計數得到基於行的輸出。 – Shadow

回答

0

您可以使用子查詢來標準化職位名稱,然後按case case語句進行分組並按順序排序以生成bossiness降序的輸出。

select jobtitle,count(*) from 
(
SELECT case 
     WHEN jobTitle = 'President' THEN 'Presidents' 
     WHEN jobTitle LIKE 'VP%' THEN 'VPs' 
     WHEN jobTitle LIKE '%Manager%' then 'Managers' 
     WHEN jobTitle LIKE '%Rep' then 'Reps' 
     end as Jobtitle 
FROM 
employees 
) s 

group by Jobtitle 
order by 
case when jobtitle = 'Presidents' then 1 
when jobtitle = 'VPs' then 2 
when jobtitle = 'Managers' then 3 
when jobtitle = 'Reps' then 4 
end