Я нашел много ответов на другие похожие запросы, но ни один из них не соответствовал моим требованиям, поэтому вопрос.
Во-первых, данные:
orderid type year change
1111 1 2018 333
1111 2 2018 4652
1111 1 2019 3645
1111 3 2019 444
2222 1 2018 6451
есть объединенный ключ на столбцахorderid, тип и год.Таким образом, каждый заказ может иметь одну запись в год для определенного типа.
Теперь желаемый результат (вариант 1):
orderid type year change
1111 2 2018 4652
1111 1 2019 3645
То, что я ищу, - это максимальное изменение.стоимость данного заказа в год.Тип не имеет значения.'1111' - это порядок выборки, переданный запросу.
И если первая задача может быть улучшена дальше, в идеале я хотел бы получить сумму изменений из ответа выше.Таким образом, идеальные результаты должны выглядеть следующим образом (вариант 2):
orderid change
1111 8297
Я еще не пытался получить второй ответ, что технически должно быть простым объединением дополнительного запроса по результатам для суммированияизменение столбцов возвращается.Но то, что я пытался до сих пор для первого вопроса (и добавить - без успеха), это:
SELECT t1.*
FROM table1 t1
LEFT JOIN table1 t2
ON t1.orderid = t2.orderid AND t1.year = t2.year AND t1.change > t2.change
WHERE t2.change IS NULL
AND t1.orderid = '1111'
То, что этот запрос возвращает, не совсем желаемый результат, где одно максимальное значение является правильным, нодругого нет:
orderid type year change
1111 1 2018 333
1111 1 2019 3645
Вот оно.Теперь, кто хотел бы сохранить мой вечер пятницы?
Помощь всегда очень важна!
Обновление 1: я включаю sqlfiddle со всем вышеперечисленным: SQLFiddle