我需要更改几个特定报告年份的值,因此这意味着我必须使用当前的查询分别运行每个set语句:
update [Table1]
set [Report Year] = replace([Report Year], '2013 LTP', '2013')
set [Report Year] = replace([Report Year], '2014 LTP', '2014')
set [Report Year] = replace([Report Year], '2015 LTP', '2015')
set [Report Year] = replace([Report Year], '2016 LTP', '2016')
set [Report Year] = replace([Report Year], '2017 LTP', '2017')
set [Report Year] = replace([Report Year], '2018 LTP', '2018')
基本上,我试图从2019年以下的年份中删除LTP。
有没有一种方法可以同时执行一个查询来完成同样的事情?换句话说,我如何简化我的更新查询?
编辑
我需要对多个表执行此操作,比如Table1和Table2。
表1的主键为报告年份,但表2没有该约束。
表格1:
Report Year
2013 LTP
2014 LTP
2015 LTP
2016 LTP
2017 LTP
2018 LTP
2019 LTP
2020 LTP
2020 6+6
2021 LTP
2022 4+8
2022 BP
2022 LTP
BP19
BP20
表二:
Report Year
2013 LTP
2014 LTP
2014 LTP
2015 LTP
2016 LTP
2017 LTP
2018 LTP
2018 LTP
2018 LTP
2019 LTP
2020 LTP
2020 LTP
2020 LTP
2020 6+6
2021 LTP
2022 4+8
2022 BP
2022 LTP
2020 6+6
2020 LTP
2020 6+6
2021 LTP
2022 4+8
2022 LTP
2022 LTP
2022 LTP
BP19
BP20
BP20
2条答案
按热度按时间3df52oht1#
从
ReportYear
中取出前4个字符并检查其是否为数字。如果是,则将这4位数字转换为整数,并将选择限制为2019年之前的年份。通过将ReportYear
更改为该列的前4个字符来更新选择。详情和工作示例:fiddle.
2uluyalo2#
这将一直工作到本世纪末。它将文本作为文本处理,而不需要尝试强制转换为数值类型。
根据样本数据,字母比较可能已经足够了,下面这个方法还可以动态处理年份: