我有一张这样的桌子。
员工_id | 加入_年份 | 加入_月 | 加入日期时间 | 名字 | 姓氏 |
---|---|---|---|---|---|
1 | 2011 | 03 | 2011-03-06 06:00:00 | 迈克 | 乔丹 |
2 | 2012 | 11 | 2012-11-19 07:00:00 | 约翰 | 辛普森 |
31 | 2019 | 12 | 2019-12-05 11:30:00 | 简 | 亚瑟 |
我需要使用连接几列来添加一列,然后 一个特殊要求是 join_month 要显示下个月。
例如, join_month 是 03(对于 Mike)+ 1(加 1 以获得下个月),因此结果应该是 04。 如果 join_month 是 11 + 1(下个月),那么结果应该是 12
预期结果应该是
1-20110401-Mike-Jordan
2-20121201-John-Simpson
31-20200101-Jane-Athur
所以以我有限的知识,我使用了以下方法
concat(employee_id,'-',join_year,join_month+1,'01','-',firstname,'-',lastname) as 'WWID'
但是,我得到以下结果。
1-2011401-Mike-Jordan
2-20121201-John-Simpson
31-20191301-Jane-Athur
这里有 2 个问题。
第一期:第一行的 2 位数月份变为 1 位数(04 > 4)
第二期:201912(十二月)的下个月应该是 202001 年(一月)的下一年,但结果却是 201913..
有什么办法可以达到上述预期的效果吗?请帮忙。
谢谢你
当月份为 12 时,您需要处理特殊情况。月份数字会环绕到 1,并且年份必须递增。为此,您可以使用
IF
或 CASE
。
concat(employee_id,'-',
IF(join_month = 12, join_year+1, join_year),
IF(join_month = 12, 1, join_month+1),
'01','-',firstname,'-',lastname) as 'WWID'