2012-12-05 5 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' 
Смежные вопросы