2013-10-23 49 views
-2

我見下表:如何轉動查詢在MySQL

Year, Name, Revenue, Qty 

我想結果表

名稱,Revenue2012,Qty2012,Revenue2013,Qty2013

如何在Sql for MySql中完成?

感謝

+1

你嘗試過什麼嗎? SO中涵蓋了這個概念。只是谷歌它。 – AgRizzo

+0

由於您的所有列都可以在設計時使用,因此可以使用帶CASE條款的交叉表。 –

+0

select * from table pivot(max(qty)for revenue IN(...))as vijj;在sql-server –

回答

1

MySQL不具有旋轉功能,但你可以使用聚合函數CASE表達式得到的結果:

select name, 
    sum(case when year = 2012 then revenue else 0 end) revenue2012, 
    sum(case when year = 2012 then qty else 0 end) qty2012, 
    sum(case when year = 2013 then revenue else 0 end) revenue2013, 
    sum(case when year = 2013 then qty else 0 end) qty2013 
from yourtable 
group by name 
+0

精彩,謝謝它像一個魅力!謝謝! – stighy

0

如果你正在使用PHP但是,您可以顯示它你想要:

$table=mysqli_query($con," 
SELECT * 
FROM table 
"); 

echo "<table> 
<tr> 
<th>Name</th> 
<th>Revenue2012</th> 
<th>Qty2012</th> 
<th>Revenue2013</th> 
<th>Qty2013</th> 
</tr>"; 

while($row = mysqli_fetch_array($table)) 
    { 
    echo "<tr>"; 
    echo "<td>". $row['Name'] . "</td>"; 
    echo "<td>". $row['Revenue'] . $row['Year'] . "</td>"; 
    echo "<td>". $row['Qty '] . "</td>"; 
    echo "<td>". $row['Revenue'] . $row['Year'] . "</td>"; 
    echo "<td>". $row['Qty '] . "</td>"; 
    echo "</tr>"; 
    } 
echo "</table>"; 

或任何適合您的需求。

+0

OP明確指出:「*如何在** Sql ** for MySql?*」(重點是我的)。 –