我需要按年分组一个表,并将所有可能的类型(未知)与动态列名汇总。组和动态列名加总和
样品表:
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
我需要按年分组一个表,并将所有可能的类型(未知)与动态列名汇总。组和动态列名加总和
样品表:
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
,你可以使用这样的查询组,总和类型 -
SELECT year, type, COUNT(type) FROM table_name GROUP BY year, type;
它给出了另一个结果集,但有你想要的数据。
我最终采用这种方法。 – primalforma
SELECT year,COUNT(type) from tableName GROUP BY(type)
尝试一个
它不是动态列名称(AKA:pivot)。 –
SOL不是为此设计的,其结果可能永远不会为每行有不同数量的列。
我认为最好的方法是通过示例来连接信息来改变结果集的设计。或者有固定数量的.column由null或空值填充。
另一方面,如果您的语言允许每行的动态列数,则可以通过编程来实现。
我试过基本的IF语句,但我需要能够处理“未知”数量的类型/列。即: “SELECT Year,SUM(IF(Type =='a',1,0))AS Type_a FROM TABLE GROUP BY Year”不会这样做。我已经看到了一些示例,但它们都处理“已知”数量的变量类型/列 – primalforma