2016-10-26 83 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