2012-08-16 92 views
1

我有以下表具有以下数据动态交叉表在MySQL

 

Year | Age Group | Male | Female 
2000 | 0 - 25 | 50 | 100 
2000 | 26 above | 40 | 75 
2001 | 0 - 25 | 150 | 86 
2001 | 26 above | 65 | 83 

我想在下面的格式

 
       | Male | Female 
2000   | 90  | 175 
     0 - 25 | 50  | 100 
     26 above | 40  | 75 
2001   | 215 | 169 
     0 - 25 | 150 | 86 
     26 above | 65  | 83 

我将是你非常感激创建一个跨标签帮助。

+2

唯一的区别有你如何输出它以后,它不会出来一样,MySQL的,但你可以做到这一点很容易通过年份代码的改变和以后输出。 – BugFinder 2012-08-16 06:40:56

+0

我几乎没有看到任何区别,我也看不到任何一点这样做。在MySQL端不输出时这样生成表。 – 2012-08-16 06:43:02

+0

它看起来像数据报告服务的任务。 – Devart 2012-08-16 06:57:00

回答

3

SQLFiddle example

select * from 
(
select year,ageGroup,male,female from t 
union all 
select year,'' ageGroup,sum(male) male,sum(female) female 
from t group by year 
) st 
order by year,agegroup 
+0

@Matrich:如果这个答案适合你,请[标记为已接受]( http://stackoverflow.com/faq#howtoask) – valex 2012-08-17 11:24:25

+0

我已添加另一列国家。我如何按年份,国家,年龄组排列相同的分组,然后以男性,女性为列。 – Matrich 2012-08-21 12:08:29

+0

这是[年份,国家,AGEGROUP示例](http://sqlfiddle.com/#!2/292c6/3) – valex 2012-08-21 13:08:13