2016-11-04 85 views
3

我想创建mysql查询来算我的一些数据,没有WHERE子句,不喜欢:mysql的报告,分析查询

select count(Gender),concat(Gender), Year from sometable where Year = 2015 group by Gender 
union 
select count(Gender),concat(Gender), Year from sometable where Year = 2016 group by Gender; 

而更像是:

select Gender,Year something to count .... 

这里是例子:

表我有

--------------- 
Gender | Year 
--------------- 
Male  2016 
Male  2015 
Female 2015 
Female 2016 
--------------- 

最终的结果是

  --------------- 
      2015 | 2016 
      --------------- 
Male  1  1 
Female  1  1 
      --------------- 
+1

会'选择性别,年份,COUNT(*)从表中按性别分组,年份就够了? – Antti29

+0

似乎这篇文章类似于http://stackoverflow.com/questions/1241178/mysql-rows-to-columns.从列值动态创建列是一个问题。我已经给出了一个临时解决方案。检查它是否足够。 –

回答

1

让我们假设表名称为gender_count。要得到的结果就像你想尝试以下查询

SELECT DISTINCT 
    gender, 
    (SELECT 
      COUNT(*) 
     FROM 
      gender_count 
     WHERE 
      year = '2015' AND gender = gc.gender) '2015', 
    (SELECT 
      COUNT(*) 
     FROM 
      gender_count 
     WHERE 
      year = '2016' AND gender = gc.gender) '2016' 
FROM 
    gender_count gc 
+0

2015年之前和2016年之后的年份? – Antti29

+0

是的,我知道这是不可能的,OP要求它,这就是为什么给这个解决方案。让我们等待OP的意见。动态构建列我认为会有一些问题。 –