2011-10-21 41 views
1

我需要按年分组一个表,并将所有可能的类型(未知)与动态列名汇总。组和动态列名加总和

样品表:

Type|Year 
a 2001 
a 2001 
c 2002 
b 2002 
c 2003 
a 2003 
z 2003 

示例结果:

Year: 2001, Type_a: 2 
Year: 2002, Type_c: 1, Type_b: 1 
Year: 2003, Type_c: 1, Type_a: 1, Type_z: 1 
+0

我试过基本的IF语句,但我需要能够处理“未知”数量的类型/列。即: “SELECT Year,SUM(IF(Type =='a',1,0))AS Type_a FROM TABLE GROUP BY Year”不会这样做。我已经看到了一些示例,但它们都处理“已知”数量的变量类型/列 – primalforma

回答

1

,你可以使用这样的查询组,总和类型 -

SELECT year, type, COUNT(type) FROM table_name GROUP BY year, type; 

它给出了另一个结果集,但有你想要的数据。

+0

我最终采用这种方法。 – primalforma

0
SELECT year,COUNT(type) from tableName GROUP BY(type) 

尝试一个

+0

它不是动态列名称(AKA:pivot)。 –

0

SOL不是为此设计的,其结果可能永远不会为每行有不同数量的列。

我认为最好的方法是通过示例来连接信息来改变结果集的设计。或者有固定数量的.column由null或空值填充。

另一方面,如果您的语言允许每行的动态列数,则可以通过编程来实现。