したがって、特定のフィールドを計算する方法を除いて、機能しているストアドプロシージャがあります。使用されるテーブルには、DeliveryYearMonth
単純YYYYMM
にその形式であると呼ばれるフィールドがあります。今月の情報と前月の情報を比較しようとしているので、次の2つの変数を作成しました。
DECLARE @CURDate VARCHAR(50) -- Current time (YYYYMM)
DECLARE @MAGDate VARCHAR(50) -- YearAgo Time (YYYYMM)
SET @CURDate = cast((select max(DeliveryYearMonth) from dbo.datatable) as varchar)
SET @MAGDate = cast((substring(@CURDate,1,4)) as varchar) --For current year
+ cast((substring(@CURDate,5,2) - 1) as varchar) -- To get previous month
月が1月でない限り、これはすべて問題なくダンディです。したがって、月は00になり、年は同じままになります。
そこで、これを解決するためにifステートメントを試してみました。
if(substring(@MAGDate,5,2)) = '00'-- If current Month is January
begin
Set @MAGDate = cast((substring(@CURDate,1,4) - 1) as varchar) --For previous year
+ '12' -- December
end
これは、ステートメントが真でない(@MAGDate)
場合でも、常に1か月前の日付を破ります。IF
理由がわかりません。
ありがとう