1

我想混合 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

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

4

1 回答 1

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'
于 2012-12-05T18:54:11.623 回答