Я новичок в SQL Server 2014. У меня есть таблица с записями, подобными приведенным ниже.
Year | ItemName | price | effectivefromdate
===============================================
2018 | item27 | 1595.0000 | 2017-01-01
2018 | item27 | 1595.0000 | 2018-03-01
2018 | item29 | 1000.0000 | 2017-01-01
2018 | item29 | 1100.0000 | 2018-03-01
2018 | item30 | 1795.0000 | 2017-01-01
2018 | item30 | 1795.0000 | 2018-03-01
2018 | item30 | 1795.0000 | 2018-06-01
2018 | item32 | 1322.0000 | 2017-01-01
2018 | item32 | 1350.0000 | 2018-03-01
2018 | item32 | 1376.0000 | 2018-06-01
Здесь каждый элемент имеет одну или несколько строк с одинаковыми или разными ценами. Я должен взять самую последнюю дату вступления в силу для каждого элемента, когда цена изменилась
Если с несколькими датами вступления в силу цены не изменяются, я должен вернуть товар с минимальной датой вступления в силу.
Например, в позиции 27 есть две записи, но цена не изменилась, поэтому я должен принять цену за 1595, а дату вступления в силу за 2017-01-01
В случае пункта 29 здесь изменилась цена, поэтому в качестве цены и даты вступления в силу необходимо указать 1100. 2018-03-01.
Expected Output
Year | ItemName | price | effectivefromdate
===============================================
2018 | item27 | 1595.0000 | 2017-01-01
2018 | item29 | 1100.0000 | 2018-03-01
2018 | item30 | 1795.0000 | 2017-01-01
2018 | item32 | 1376.0000 | 2018-06-01
Я пытался использовать функцию Lag / Lead, но безуспешно. Последние два дня я борюсь с этим.
Пожалуйста, предложите мне какое-нибудь решение, чтобы решить эту проблему.