日期:2014-05-16  浏览次数:20473 次

sql 有优化或简写吗
--计算本年的个数量,金额
select a.wlcode,a.sumqty1-b.sumqty2

select wlcode,oyear
,sum(qty1)sumqty1,sum(qty2)sumqty2
,sum(money1)summoney1,sum(money2) as summoney2 from table1
where oyear ='2013'
group by wlcode,oyear
)a inner join
(
--因为一个条件不同,我就的写两次
select wlcode,oyear
,sum(qty1)sumqty1,sum(qty2)sumqty2
,sum(money1)summoney1,sum(money2) as summoney2 from table1
where oyear ='2012'
group by wlcode,oyear
)b a.wlcode = b.wlcode

------解决方案--------------------
也可以做简化。


select a.wlcode,a.sumqty1-b.sumqty2
可以这样:
SELECT  wlcode ,
        SUM(CASE WHEN oyear='2013' THEN qty1 ELSE 0 END ) - SUM(CASE WHEN oyear='2012' THEN qty2 ELSE 0 END )
FROM    table1
WHERE   oyear IN ( '2013', '2012' )
GROUP BY wlcode