ストアド プロシージャで更新する列を実行時に動的に決定したい
BshForecast
次のような属性を持つテーブルがあります。
projectId, JobTypeId, Year, JanDone, FebDone, MarDone... (for all months)
そして、機能していないこのストアドプロシージャがあります
CREATE PROCEDURE [dbo].[SP_Update_Done_Last_Month2]
@Project_ID INT,
@Job_Type_ID INT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @LAST_MONTH INT
SET @LAST_MONTH = DATEPART(MM,DATEADD(MM, -1, GETDATE()))
UPDATE BshForecast
Set (CASE @LAST_MONTH
WHEN 1 THEN JanDone
WHEN 2 THEN FebDone
WHEN 3 THEN MarDone
WHEN 4 THEN AprDone
WHEN 5 THEN MayDone
WHEN 6 THEN JunDone
WHEN 7 THEN JulDone
WHEN 8 THEN AugDone
WHEN 9 THEN SepDone
WHEN 10 THEN OctDone
WHEN 11 THEN NovDone
WHEN 12 THEN DecDone
END) = 0
WHERE
(ProjectId = @Project_ID)
and (JobTypeId = @Job_Type_ID)
and (Year = DATEPART(YY, DATEADD(MM, -1, GETDATE())))
END
何が問題だと思いますか?そして、これを行う正しい方法は何ですか?