2010-08-30 134 views
2

我有一个表:转换SQL行成列

A B  c 
a1 1  a11 
a1 2  a12 
a1 3  a13 
a2 1  a21 
a2 2  a22 
a2 3  a23 

,我想将其转换为:

A  C1  C2  C3 
a1 a11 a12 a13 
a2 a21 a22 a23 

我如何写一个SQL查询来实现这一点......我不想将我的表格转换为csv并使用python并执行它...

+0

只是为了澄清一些。您是否想根据B列中的值将C列分成多列?您是试图替换第一个表格设计还是试图编写一个查询来保留第一个表格设计,但是为第二个表格设计拉取值? – 2010-08-30 15:18:54

+0

我想用这种设计观察桌子。 – 2010-08-30 15:23:40

+0

看看['如何将行转换为列'](http://stackoverflow.com/questions/3120835/how-to-pivot-rows-into-columns-custom-pivoting)。 – 2010-08-30 15:16:08

回答

2
SELECT A, 
MAX(CASE WHEN B=1 THEN c END) AS C1, 
MAX(CASE WHEN B=2 THEN c END) AS C2, // etc for B=3,4 
FROM table1 
GROUP BY A