2014-01-16 47 views
0

我在oracle數據庫中有一個表,它由三個字段(name,id,count)組成。 Id範圍從1到4都包括在內。將錶轉換成行數較少的另一個表?

對於表中的示例數據就像下面

+----+--+-----+ 
|Name|Id|Count| 
+----+--+-----+ 
|A |2 |5 | 
+----+--+-----+ 
|A |3 |15 | 
+----+--+-----+ 
|B |1 |10 | 
+----+--+-----+ 
|B |2 |12 | 
+----+--+-----+ 
|B |4 |6 | 
+----+--+-----+ 

現在我的問題是使表像,如姓名和頭部部分ID及其在相應的位置數以下。

以上示例表的結果如下所示。

+----+------+------+------+------+ 
|Name|Id(=1)|Id(=2)|Id(=3)|Id(=4)| 
+----+------+------+------+------+ 
|A |0  |5  |15 |0  | 
+----+------+------+------+------+ 
|B |10 |12 |0  |6  | 
+----+------+------+------+------+ 

我很震驚。有可能嗎? 請幫幫我。

感謝你的幫助。

預先感謝您。

回答

1

您需要樞軸分離。您可以在聲明中使用case when ..

select 
name, 
case `id` 
    when 1 then `count` else 0 end as 'id=1', 
case `id` 
    when 2 then `count` else 0 end as 'id=2', 
... 
from my_table 

您還可以使用if(...功能:

select 
name, 
if(`id`=1, `id`, 0) as 'id=1', 
if(`id`=2, `id`, 0) as 'id=2', 
... 
from my_table 
+0

謝謝它完美。很簡單 :) – user2951828

相關問題