我想混合 2 个 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
如何以最有效的方式做到这一点?
我想混合 2 个 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
如何以最有效的方式做到这一点?
简单地结合你的两个查询会给
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'