我有下表
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 的最后一个日历日期,结果如下:
例如:对于 weekId 200,weekRange 将为
1993-06-26 00:00:00 - 1993-07-01 00:00:00
非常感谢这里的任何帮助。谢谢
最佳答案
您可以在子查询上使用 weekId 的内部联接来获取 min 和 max
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') )
关于mysql - Sql 组合列的第一个值和最后一个值来创建第三列的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52210645/