gpt4 book ai didi

mysql - 根据日期更新某些列。解决这个问题的最佳方法

转载 作者:行者123 更新时间:2023-11-29 12:17:08 26 4
gpt4 key购买 nike

我有一个表需要更新。在此表中,每个月有一列。如果某人的开始日期是 2015 年 2 月 13 日,我需要使用计算中的一些数据更新二月列。

因此,如果 Start_Date 为 2/17/2015,则需要填充名为 FTEFeb 的二月列的值。如果 Start_Date 是 3/09/2015,则需要更新 FTEMar 列等...

我认为 CASE 语句可以工作,但 SET 列会根据开始日期中的值而有所不同。

我在网上查找过类似的内容,但没有找到任何结果。提前致谢!

最佳答案

您可以使用 case 语句。

对于您的查询,无需在月份上执行 CASE,只需编写一个案例来更新每一列,如果该列不是您想要的月份,您可以将其设置为 0,或者无论您的业务规则是什么。试试这个:

UPDATE myTable
SET
FTEJan = (CASE WHEN MONTH(startDate) = 1 THEN 1 ELSE 0 END),
FTEFeb = (CASE WHEN MONTH(startDate) = 2 THEN 1 ELSE 0 END),
FTEMar = (CASE WHEN MONTH(startDate) = 3 THEN 1 ELSE 0 END),
FTEApr = (CASE WHEN MONTH(startDate) = 4 THEN 1 ELSE 0 END),
FTEMay = (CASE WHEN MONTH(startDate) = 5 THEN 1 ELSE 0 END),
FTEJun = (CASE WHEN MONTH(startDate) = 6 THEN 1 ELSE 0 END),
FTEJul = (CASE WHEN MONTH(startDate) = 7 THEN 1 ELSE 0 END),
FTEAug = (CASE WHEN MONTH(startDate) = 8 THEN 1 ELSE 0 END),
FTESep = (CASE WHEN MONTH(startDate) = 9 THEN 1 ELSE 0 END),
FTEOct = (CASE WHEN MONTH(startDate) = 10 THEN 1 ELSE 0 END),
FTENov = (CASE WHEN MONTH(startDate) = 11 THEN 1 ELSE 0 END),
FTEDec = (CASE WHEN MONTH(startDate) = 12 THEN 1 ELSE 0 END);

这是一个SQL Fiddle示例。

关于mysql - 根据日期更新某些列。解决这个问题的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29630507/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com