次の列empid、month、year、day1、day2、day3、day4 ..... day31を含むテーブルがあります。
従業員がログインすると、毎日出席を更新する SP を作成しました。
CREATE PROC PROC_Attendance_update @empid INT, @day INT, @month INT, @year INT
AS
BEGIN
DECLARE @sql_text VARCHAR(8000)
SET @sql_Text = 'UPDATE tblattendance SET DAY'+CONVERT(VARCHAR(2),@day)+'=''P'' WHERE empid = '+CONVERT(VARCHAR(4), @empid)+' AND month = '+CONVERT(VARCHAR(4), @month)+' AND Year ='+CONVERT(VARCHAR(4), @year)
EXEC(@sql_text)
END
しかし、私はそれを動的SQLにしたくありません。標準の T-sql コードに書き直したい。
試してみましたがうまくいきませんでした。
CREATE PROC PROC_Attendance_update @empid INT, @day INT, @month INT, @year INT
AS
BEGIN
UPDATE tblattendance SET CASE WHEN @day=1 THEN DAY1 = 'P'
WHEN @day=2 THEN DAY2 = 'P'
.
.
WHEN @day=31 THEN DAY31 = 'P'
END
WHERE empid = @empid AND MONTH = @month AND Year = @Year
END
誰でもこれについて助けることができますか?