您好我在代码点火器中尝试显示这样的表格我必须分别显示该公司的平均值
但是现在我们想要改变它的结构并将Rows转换成列。
year avg company
2015 10 2
2015 50 1
2014 25 2
2013 23 2
2011 56 3
现在我希望我的桌子看起来像这样
year 1 2 3
2015 50 10
2014 25
2013 23
2011 56
答案 0 :(得分:1)
您必须转动所需输出的记录。
示例:
SELECT year
, MAX( CASE WHEN company=1 THEN avg ELSE '' END ) as `Company1`
, MAX( CASE WHEN company=2 THEN avg ELSE '' END ) as `Company2`
, MAX( CASE WHEN company=3 THEN avg ELSE '' END ) as `Company3`
FROM so_q31890405
GROUP BY year
ORDER BY year DESC
SQL小提琴 :Demo
答案 1 :(得分:1)
不幸的是,Mysql不支持数据透视表。你必须在PHP方面解决这个问题。
将数据加载到三个变量中,以便它们包含:
$companies = [1,2,3];
$years = [2015,2014,2013,2011];
$averages = [
2015 => [1 => 50, 2 => 10],
2014 => [2 => 25],
...
];
然后你可以写表:
echo '<table><tr><th>year<th/>';
foreach ($companies as $company)
echo "<th>$company<th/>";
echo '<tr/>';
foreach ($years as $year) {
echo '<tr><td>$year<td/>';
foreach ($companies as $company)
echo "<td>{$averages[$year][$company]}<td/>";
echo '<tr/>';
}
echo '<table/>';
答案 2 :(得分:-1)
查询是:
从公司主管团体中选择年份,平均(总和(公司)),计数(公司);