実現したいこと
75期(前期:2022年4月~2023年3月)、76期(今期:2023年4月~2024年3月)それぞれの売上金額を合計した項目を作成したい。最終的には今期売上金額と前期売上金額を出して前期比を計算させたいが、まずは76期(今期)の合計金額を出力するクエリを教えてほしい。また期が変わった際には最新の期を今期として計算させたい。
前提
期首が毎年4月であり1期の期間は4月~翌年の3月である。
テーブル名はURIAGE_DATA(下記がデータです)とします。
SHIWAKE_KI,SHIWAKE_YY,SHIWAKE_MONTHは文字項目、
URIAGE_GAKは数字項目です。
SHIWAKE_KI SHIWAKE_YY SHIWAKE_YYMM SHIWAKE_MONTH URIAGE_GAK
75 2023 202301 01 10
75 2023 202302 02 11
75 2023 202303 03 12
76 2023 202304 04 13
76 2023 202305 05 14
76 2023 202306 06 15
76 2023 202307 07 16
76 2023 202308 08 17
76 2023 202309 09 18
76 2023 202310 10 19
76 2023 202311 11 20
76 2023 202312 12 21
76 2024 202401 01 22
76 2024 202402 02 23
76 2024 202403 03 24
77 2024 202404 04 25
77 2024 202405 05 26
77 2024 202406 06 27
77 2024 202407 07 28
77 2024 202408 08 29
77 2024 202409 09 30
77 2024 202410 10 31
77 2024 202411 11 32
77 2024 202412 12 33
77 2025 202501 01 34
77 2025 202502 02 35
77 2025 202503 03 36
78 2025 202504 04 37
78 2025 202505 05 38
発生している問題・エラーメッセージ
SELECT SUM(CASE WHEN SHIWAKE_KI = 76 THEN URIAGE_GAK ELSE 0 END) AS 今期売上金額 FROM URIAGE_DATAで実現できるのだが、例えば2024年4月に期がかわると77期が今期となるのでそのたびに76の部分を変更しなくてはならないので、76の部分をリテラルでは書きたくないです。
SELECT SUM( CASE WHEN (SHIWAKE_MONTH IN ('04', '05', '06', '07', '08', '09', '10', '11', '12') AND CAST(SHIWAKE_KI AS NUMERIC) = CAST(SHIWAKE_YY AS NUMERIC) - 1947)
OR (SHIWAKE_MONTH IN ('01', '02', '03') AND CAST(SHIWAKE_KI AS NUMERIC) = CAST(SHIWAKE_YY AS NUMERIC) - 1948) THEN URIAGE_GAK
ELSE 0
END
) AS 今期売上金額
FROM URIAGE_DATA
だと2023年1月~3月(75期)の売上金額も今期売上金額に合計されてしまう。
2023年1月の場合(SHIWAKE_MONTH IN ('01', '02', '03') AND CAST(SHIWAKE_KI AS NUMERIC) = CAST(SHIWAKE_YY AS NUMERIC) - 1948)に入っていいくがSHIWAKE_KIが75でSHIWAKE_YYが2023なのでCAST(SHIWAKE_YY AS NUMERIC) - 1948)の計算結果が75となりTURUなので今期(76期)でないが合計金額の対象となり計算されてしまっていると思われます。
システム日付を利用したらできるのかなど考えましたが、
現状では実現したいことができませんでした。
ご教授頂きますようお願いいたします。
該当のソースコード
SELECT SUM(CASE WHEN SHIWAKE_KI = 76 THEN URIAGE_GAK ELSE 0 END) AS 今期売上金額
FROM URIAGE_DATA
SELECT SUM( CASE WHEN (SHIWAKE_MONTH IN ('04', '05', '06', '07', '08', '09', '10', '11', '12') AND CAST(SHIWAKE_KI AS NUMERIC) = CAST(SHIWAKE_YY AS NUMERIC) - 1947)
OR (SHIWAKE_MONTH IN ('01', '02', '03') AND CAST(SHIWAKE_KI AS NUMERIC) = CAST(SHIWAKE_YY AS NUMERIC) - 1948) THEN URIAGE_GAK
ELSE 0
END
) AS 今期売上金額
FROM URIAGE_DATAリンク内容
試したこと
発生している問題・エラーメッセージに記載
補足情報(FW/ツールのバージョンなど)
