你好我想這個代碼點火器來顯示這樣的表,我必須分別顯示了公司的平均值爲年如何顯示的行,列在MySQL視圖表
但現在我們要改變該結構和行轉換爲列。
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
你好我想這個代碼點火器來顯示這樣的表,我必須分別顯示了公司的平均值爲年如何顯示的行,列在MySQL視圖表
但現在我們要改變該結構和行轉換爲列。
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
你必須轉動的記錄所需的輸出。
例:
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
您好,我的平均值是一個函數平均值(價值)作爲平均值 –
顯示您的記錄,您計算了'AVG' –
SELECT YEAR(mptd.updated_time)AS year,avg(mptd.actual_value)AS avgs,mpr.company_id AS性別 FROM( 'mmt_lab_template_details' mltd,,MAX(CASE WHEN company = 1 THEN avg ELSE''END)as'Company1'我想這樣做 –
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/>';
查詢是:
選擇一年中,AVG(總和(公司)),按公司統計(公司);
否。一個可能的查詢將是SELECT * FROM companymaster ORDER BY year DESC,company,'avg'; – Strawberry
看到你已經用php標記了這個,只需要使用一個簡單的循環來處理那裏的顯示問題。當做貢獻者發佈截然相反的答案時,我確實喜歡它。 – Strawberry
實際上我希望它發送到線形圖的陣列 –
沒關係,一個有序的陣列將工作得很好。 – Strawberry