Sql объединить первое и последнее значение столбца, чтобы создать диапазон до третьего столбца - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть следующая таблица

 WeekId  CalendarDate
 200     1993-06-26 00:00:00
 200     1993-06-27 00:00:00
 200     1993-06-28 00:00:00
 200     1993-06-29 00:00:00
 200     1993-06-30 00:00:00
 200     1993-07-01 00:00:00
 201     1993-10-02 00:00:00
 ...     ...................
 ...     ...................

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

Например: для weekId 200 значение WeekRange будет равно

1993-06-26 00:00:00 - 1993-07-01 00:00:00

Любая помощь здесь очень ценится. Спасибо

1 Ответ

0 голосов
/ 06 сентября 2018

Вы можете использовать внутреннее соединение в подзапросе для min и max по weekId

  select m.WeekId, m.calendarDate, concat(t.min_date, ' - ' , t.max_date )
  from my_table m  
  inner join  (
      select  weekId 
      , min(calendarDate) min_date
          , max(calendarDate) max_date 
      from my_table  
      group by weekId 
  ) t on t.weekId = m.weekId 

после того, как вы изменили таблицу, добавив столбцы weekRange (как varchar) ..
Вы можете использовать обновление

  update my_table  m1 
  inner join  (

      select  weekId 
      , min(calendarDate) min_date
          , max(calendarDate) max_date 
      from my_table  
      group by weekId 
  ) t on t.weekId = m1.weekId 
  set  m1.weekRange  = concat(t.min_date, ' - ' , t.max_date )

и для формата даты как в вашем комментарии

обновить my_table m1 внутреннее соединение (

  select  weekId 
  , min(calendarDate) min_date
      , max(calendarDate) max_date 
  from my_table  
  group by weekId 
  ) t on t.weekId = m1.weekId 
 set  m1.weekRange  = concat(date_forma(t.min_date, '%m/%d/%Y'), 
        ' - ' , date_forma(t.max_date, '%m-%d-%Y') )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...