我有下表
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的第一个日历日期和同一周Id的最后一个日历日期,结果如下:
例如:对于第200周,周数将是
1993-06-26 00:00:00 - 1993-07-01 00:00:00
这里的任何帮助非常感谢。谢谢
您可以在子查询上使用内部联接,最小值和最大值为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') )