2011-10-21 40 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或空值填充。

另一方面,如果您的語言允許每行的動態列數,則可以通過編程來實現。