У меня есть случай, когда я должен найти дату начала и дату окончания ПродуктаОпределить дату начала и Дату окончания из списка дней сделки продукта в SQL
У меня есть таблица, как показано ниже,
Product Country Attribute_1 Attribute_2 Attribute_3 Transaction_date
ABC US Color Green Small 20130101
ABC US Color Green Small 20130102
ABC US Color Green Small 20130103
ABC US Color Green Small 20130104
ABC US Color Green Small 20130105
ABC US Color Red Big 20130201
ABC US Color Red Big 20130202
ABC US Color Red Big 20130203
ABC US Color Red Big 20130204
ABC US Color Red Big 20130205
ABC US Color Green Small 20130301
ABC US Color Green Small 20130302
ABC US Color Green Small 20130303
ABC US Color Green Small 20140101
Выход должен быть,
Product Country Attribute_1 Attribute_2 Attribute_3 Start_Date End_Date
ABC US Color Green Small 20130101 20130201
ABC US Color Red Big 20130201 20130301
ABC US Color Green Small 20130301 99999999
Здесь уникальный ключ продукта + СТРАНА
Я пытался M IN, MAX и FIRST_VALUE и LAST_VALUE, как показано ниже, но не в состоянии получить желаемый результат.
FIRST_VALUE(Transaction_date) OVER (PARTITION BY PRODUCT, COUNTRY OVER Attrubute1, Attribute_2, Attribute_3 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
опробовали Min, Max и GroupBy, это не дает желаемого результата. Выходной сигнал
Product Country Attribute_1 Attribute_2 Attribute_3 Start_Date End_Date
ABC US Color Green Small 20130101 20140101
ABC US Color Red Big 20130201 20130205
В этом случае, если я передам дату 20130204, я получу две записи. В идеале я должен получить только вторую запись.
Может кто-то, пожалуйста, помогите мне получить желаемый результат.
Какая СУБД вы используете? Postgres? Oracle? –
Я использую Postgres, даже Oracle будет работать. У меня есть данные в обоих, и я предпочитаю код в Postgres. Спасибо –