2017-03-15 76 views
0

我有這樣如何重新組織標準sql中的表?

Id | Name | Num 
---------------- 
#1 | a | 3 
#1 | b | 4 
#2 | a | 1 
#2 | e | 2 

表並想將其重組爲

| a | b | e 
--------------- 
#1 | 3 | 4 | 
#2 | 1 | | 2 

我能真正做到這一點與大熊貓庫Python,但它是非常緩慢的,當數據設置很大。 我不知道它是否可以在SQL中完成。

回答

2

這被稱爲pivoting。通用方法使用條件聚合:

select id, 
     max(case when name = 'a' then num end) as a, 
     max(case when name = 'b' then num end) as b, 
     max(case when name = 'e' then num end) as e 
from t 
group by id; 

這假定您想要三個額外的列並且知道名稱。如果你想要name中的任何值的列,那麼你需要構造動態SQL。如果您遵循上面的模板,那麼通過查詢表中列的值來構造Python中的查詢可能不會太困難。

+0

你的答案真的有幫助!非常感謝:D –