Итак, у меня есть такая таблица (упрощенно):
id| Country_dsc | Year | Month | Quantity | Value |
1 | Armenia | 2019 | 2 | 4 | 2 |
2 | Armenia | 2019 | 3 | 6 | 4 |
3 | Armenia | 2018 | 1 | 6 | 5 |
4 | Armenia | 2018 | 2 | 3 | 3 |
5 | Armenia | 2018 | 3 | 7 | 5 |
И я бы хотел получить такой результат:
Name | YTD_Quantity_Y | YTD_Quantity_LY | YTD_Value_Y | YTD_Value_LY |
Armenia | 10 | 16 | 6 | 13 |
с суммой YTD_Quantity_Y
всего количества 2019 и YTD_Quantity_LY
сумма всего количества 2018 с начала года до текущего месяца (в этом примере март).Та же логика для значения.
Итак, что я пробовал:
SELECT t1.Country_Dsc as Name,
SUM(t1.Quantity) as YTD_Quantity_Y, -- January, February, March 2019
SUM(t2.Quantity) as YTD_Quantity_LY -- January, February, March 2018
SUM(t2.Value) as YTD_Value_Y -- January, February, March 2019
SUM(t2.Value) as YTD_Value_LY -- January, February, March 2018
FROM example_table t1
LEFT JOIN example_table t2 on t1.Country_Dsc = t2.Country_Dsc
AND t1.Year = 2018
AND t1.Month = t2.Month
WHERE t1.Year = 2019
and t1.Month <= 3 -- in this case I want all data from January to March for 2019 and 2018
GROUP BY t1.Country_Dsc
Проблема в том, что с 2019 года нет записей за январь, я не получаю количество января 2018 года в YTD_Quantity_LY .
Если я начинаю с 2018 года и присоединяюсь к 2019 году, это работает, но иногда у меня есть случай, когда для 2018 года у меня нет записи в течение месяца, поэтому она не будет отображаться для 2019 года (YTD_Quantity_Y ).
Возможно ли получить желаемый результат без использования запроса для каждого года?