2013-09-25 37 views
0

我有以下MySQL表:Mysql的行列

+----+-----+-----+--------+ 
| id | sid | tid | val | 
+----+-----+-----+--------+ 
| 1 | 1 | 1 | square | 
| 2 | 1 | 2 | big | 
| 3 | 1 | 3 | red | 
| 4 | 2 | 1 | circle | 
| 5 | 2 | 2 | small | 
| 6 | 2 | 3 | yellow | 
+----+-----+-----+--------+ 

而且我需要一個查詢,以得到如下結果:

+-----+--------+-------+--------+ 
| sid | figure | size | colour | 
+-----+--------+-------+--------+ 
| 1 | square | big | red | 
| 2 | circle | small | yellow | 
+-----+--------+-------+--------+ 

任何想法?

謝謝。

+0

你怎麼知道標題應該是'figure','size'和'colour'列?這是存儲_somewhere_或者你只是猜測? – Taryn

+0

列標題並不重要。謝謝。 – cornell

回答

2

您沒有提供任何關於如何確定新列名的細節,但根據您的數據我猜測它基於tid列中的值。您可以使用聚合函數的情況下,表達式得到的結果:

select 
    sid, 
    max(case when tid = 1 then val end) figure, 
    max(case when tid = 2 then val end) size, 
    max(case when tid = 3 then val end) color 
from yourtable 
group by sid; 

SQL Fiddle with Demo