2017-03-15 46 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 –