SQL first_value () по определенной дате - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть данные, в которых указана конкретная дата (гггг-мм-дд) с указанием города и значения

-------------------------------------
   city   |  date       | value
-------------------------------------
   city A |  2018-05-01 |  10
   city A |  2018-04-03 |  15
   city A |  2019-01-03 |  9
   city A |  2019-05-01 |  13
   city B |  2019-05-01 |  12
   city B |  2019-02-12 |  11

, и я хотел бы получить первое значение для каждого года, разделенного по городам, в следующемстолбец:

--------------------------------------------------
   city   |  date       | value | first_value_year_by_city
--------------------------------------------------
   city A |  2018-05-01 |  10   |    15
   city A |  2018-04-03 |  15   |    15
   city A |  2019-01-03 |  9    |    9
   city A |  2019-05-01 |  13   |    9
   city B |  2019-05-01 |  12   |    11
   city B |  2019-02-12 |  11   |    11

Для этого я использовал SQL:

select *,
,first_value(value) over(partition by city order by date rows between unbounded preceding and unbounded following) as first_value_year_by_city
 from table

Но я не мог поставить datepart (год, дата) = 2018 и datepart (год, дата) = 2019 вfirst_value ().Как мы можем это сделать?

1 Ответ

0 голосов
/ 24 февраля 2019

Вы можете указать год в partition by:

select t.*,
       first_value(value) over (partition by city, year(date)
                                order by date
                               ) as first_value_year_by_city
from table t;
...