mysql - Sql 组合列的第一个值和最后一个值来创建第三列的范围

标签 mysql sql

我有下表

 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/

相关文章:

php - MySQL sql查询LIKE获取当前营业时间

mysql - 您可以在 SQL 中拥有多个键吗?为什么要这样?

mysql - 使用 PREPARE 和 EXECUTE 时遇到问题

python - 在 Django 中选择查询。如何检索列的单个值?

PHP、MySQL 结果中出现 HTML 错误

mysql - 如何使用脚本shell执行mysql命令

mysql - SQL中的单行UPDATE查询需要3秒以上

sql - 将 DateTime 分组为 5、15、30 和 60 分钟间隔

sql - 如何 - 在 SQL Server 中创建后直接创建和使用数据库?

sql - 将 Progress/4GL 转换为 SQL