【发布时间】:2020-04-04 17:16:48
【问题描述】:
我有一个表sales,其属性为salesId,salesDate,..etc。 salesId 列是varchar。我需要根据salesDate 的month 的条件将salesDate 的year 值连接到salesId。我需要为大约 100 个 salesID 执行此操作。
例如:旧的 salesId = 7 和相应的 salesDate = '2018-05-07' 然后需要新的
salesId = '7/2018-2019'
所以我尝试了以下方法:
update sales
set salesId = case
when month(salesDate)>=4 then concat(salesId,concat("/",year(salesDate),"-",year(salesDate)+1))
else
concat(salesId,concat("/",year(salesDate)-1,"-",year(salesDate)))
end
where cast(salesId as unsigned) between "7" and "10";
但是,我收到以下错误:
Error Code: 1292. Truncated incorrect INTEGER value: '1/17-18'
我什至尝试过不使用任何 Cast() 作为
update sales
set salesId = case
when month(salesDate)>=4 then concat(salesId,concat("/",year(salesDate),"-",year(salesDate)+1))
else
concat(salesId,concat("/",year(salesDate)-1,"-",year(salesDate)))
end
where salesId between "7" and "10";
但在这种情况下,查询运行良好,但我得到:
0 row(s) affected Rows matched: 0 Changed: 0 Warnings: 0
我无法弄清楚错误或如何继续。有人可以提供一些指导吗? 谢谢。 样本数据
salesId salesDate
7 2017-05-15
8 2017-06-16
9 2017-07-18
10 2017-08-20
...
Required Result
salesId salesDate
7/2017-2018 2017-05-15
8/2017-2018 2017-06-16
9/2017-2018 2017-07-18
10/2016-2017 2017-02-20
【问题讨论】:
-
请提供样本数据和预期结果。目前还不清楚您要在这里完成什么。