2015-05-15 44 views
1

我想轉此表移調MySQL的臨時錶行

 
A | B | C 
---------------- 
1 | 10 | "XXX" 
1 | 20 | "YYY" 
2 | 40 | "XXX" 
2 | 50 | "YYY" 
3 | 10 | "XXX" 
3 | 20 | "YYY" 
3 | 60 | "ZZZ" 

此列:

 
A | XXX | YYY | ZZZ | 
---------------------- 
1 | 10 | 20 | 0 | 
2 | 40 | 50 | 0 | 
3 | 10 | 20 | 60 | 

我只能用臨時表,我已經在幫助自我閱讀 - 參考不起作用。 https://dev.mysql.com/doc/refman/5.0/en/temporary-table-problems.html 任何幫助?

+2

這被稱爲pivoting。如果你知道你想要的列,Google「mysql pivoting」。如果列是基於列中的值,那麼Google將使用「mysql dynamic pivoting」。 –

回答

0

如果你知道在column C的值,那麼你可以使用條件彙總:

select A, 
     coalesce(max(case when c = 'XXX' then B end),0) XXX, 
     coalesce(max(case when c = 'YYY' then B end),0) YYY, 
     coalesce(max(case when c = 'ZZZ' then B end),0) ZZZ 
from yourtable 
group by A 

Fiddle

如果沒有,你不知道潛在的列數,那麼你就需要使用dynamic sql

+0

我嘗試了你的建議,但我得到了每行只有1個值的結果。 – sievy

+0

@sievy - 你看過小提琴嗎?鑑於您的樣本輸入,它會產生您想要的結果。 – user2480596

+0

你說得對。我檢查了它,它工作正常。謝謝 – sievy