2012-12-05 26 views
1

我想混2个SQL查询,一个获得总金额在某一年,等知道在某一年的某月的量搭配两个SQL查询

SELECT SUM(money) As Anual FROM Deposito WHERE Year(FechaDeposito)=2011 

SELECT SUM(money) As monthly FROM Deposito WHERE Year(FechaDeposito)= 2011 AND Month(FechaDeposito)=10 

如何做到这一点以最有效的方式?

+0

什么是您正在使用的SQL方言? –

回答

3

简单地组合你的两个查询会给

SELECT SUM(money) As Anual, 
     SUM(CASE WHEN Month(FechaDeposito)=10 THEN money else 0 end) as monthly 
    FROM Deposito 
WHERE Year(FechaDeposito)=2011 

它将然而要命执行。理想情况下,您需要FechaDeposito上的索引,并构建日期范围以进行测试,而不是在列上运行函数,例如,

SELECT SUM(money) As Anual, 
     SUM(CASE WHEN Month(FechaDeposito)=10 THEN money else 0 end) as monthly 
    FROM Deposito 
WHERE FechaDeposito >= '2011-01-01' and FechaDeposito < '2012-01-01'