sql 统计每年每月的信息
最近在做项目时遇到要将年月信息按如下格式输出:
year month amount
1991 1 1.1
1991 2 1.2
1991 3 1.3
1991 4 1.4
1992 1 2.1
1992 2 2.2
1992 3 2.3
1992 4 2.4
查成这样一个结果
year m1 m2 m3 m4
1991 1.1 1.2 1.3 1.4
1992 2.1 2.2 2.3 2.4
(此例子也适用于工资条)
笔者最初是将表中数据按表结构全部查出,然后在方法中根据想要的结果进行装载,虽然java在内存中运行飞快,但是肯定不如直接在DB中查询出结果小效率高,而且有做重复工作的嫌疑,后来无意中发现了,sql可直接运行处结果,使之效率提升不少,sql代码:
select sales.year , (select t.amount from sales t where t.month='1' and t.year= sales.year) 'm1', (select t.amount from sales t where t.month='2' and t.year= sales.year) 'm2', (select t.amount from sales t where t.month='3' and t.year= sales.year) 'm3', (select t.amount from sales t where t.month='4' and t.year= sales.year) 'm4' from sales group by sales.year ;