好的,我理解你的需求了。你想检查 attendance_workday 表中是否有某个特定月份(比如,2024 年 1 月)的记录。如果有记录,你想执行一个 UPDATE 语句;否则,你想执行一个 INSERT 语句。
下面是一个可以满足你需求的脚本:
sql
Copy code
DECLARE @
MonthToCheck VARCHAR(6) = '202401'; -- 将此值更改为所需的月份
IF EXISTS (SELECT 1 FROM attendance_workday WHERE date_ymd LIKE @
MonthToCheck + '%')
BEGIN
-- 更新语句
UPDATE attendance_workday
SET is_work = CASE
WHEN date_ymd = @
MonthToCheck + '01' THEN '1'
WHEN date_ymd = @
MonthToCheck + '02' THEN '1'
-- 依此类推,覆盖月份中的所有天
WHEN date_ymd = @
MonthToCheck + '31' THEN '1'
END
WHERE date_ymd LIKE @
MonthToCheck + '%';
END
ELSE
BEGIN
-- 插入语句
INSERT INTO attendance_workday (date_ymd, is_work)
VALUES
(@MonthToCheck + '01', '1'),
(@MonthToCheck + '02', '1'),
-- 依此类推,覆盖月份中的所有天
(@MonthToCheck + '31', '1');
END
在运行脚本之前,用实际的月份替换 @
MonthToCheck 。这个脚本使用了条件性的 EXISTS 检查来判断表中是否存在指定月份的记录。如果存在记录,就执行 UPDATE 语句;否则,执行 INSERT 语句。脚本中包含了月份中每一天的占位符,你需要根据实际情况调整。