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 ;


此小技巧与大家分享,如果错误,请各位大神指教~!

猜你喜欢

转载自lqb1200.iteye.com/blog/1919462