teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

「回答へのコメント」に対して追記

2023/08/20 04:25

投稿

neko_the_shadow
neko_the_shadow

スコア2395

answer CHANGED
@@ -32,4 +32,21 @@
32
32
  FROM URIAGE_DATA
33
33
  WHERE SHIWAKE_YYMM <= DATE_FORMAT(CURDATE(), '%Y%m')
34
34
  AND SHIWAKE_KI = CASE WHEN MONTH(CURDATE())<=3 THEN YEAR(CURDATE())-1948 ELSE YEAR(CURDATE())-1947 END;
35
+ ```
36
+ ---
37
+ **2023-08-20 13:20追記**
38
+
39
+ > いくつか方法あると記載頂きましたが、SELECT句の中で実現可能な方法ありますか?
40
+ > SELECT ~ as 今期売上合計金額, ~ as 前期売上合計金額, 今期売上合計実績/前期売上合計実績 as 前期比 from URIAGE_DATA
41
+ > としたいです。
42
+
43
+ 無理やりこの形式に当てはめるのであれば、以下のようなSQLになるかと思います。
44
+
45
+ ```SQL
46
+ SELECT
47
+ SUM(CASE WHEN SHIWAKE_YYMM <= DATE_FORMAT(CURDATE(), '%Y%m') AND SHIWAKE_KI = (YEAR(CURDATE()) - CASE WHEN MONTH(CURDATE()) <= 3 THEN 1948 ELSE 1947 END) THEN URIAGE_GAK ELSE 0 END) AS 今期売上合計金額,
48
+ SUM(CASE WHEN SHIWAKE_YYMM <= DATE_FORMAT(CURDATE(), '%Y%m') AND SHIWAKE_KI = (YEAR(CURDATE()) - CASE WHEN MONTH(CURDATE()) <= 3 THEN 1949 ELSE 1948 END) THEN URIAGE_GAK ELSE 0 END) AS 前期売上合計金額,
49
+ SUM(CASE WHEN SHIWAKE_YYMM <= DATE_FORMAT(CURDATE(), '%Y%m') AND SHIWAKE_KI = (YEAR(CURDATE()) - CASE WHEN MONTH(CURDATE()) <= 3 THEN 1948 ELSE 1947 END) THEN URIAGE_GAK ELSE 0 END)
50
+ / SUM(CASE WHEN SHIWAKE_YYMM <= DATE_FORMAT(CURDATE(), '%Y%m') AND SHIWAKE_KI = (YEAR(CURDATE()) - CASE WHEN MONTH(CURDATE()) <= 3 THEN 1949 ELSE 1948 END) THEN URIAGE_GAK ELSE 0 END) AS 前期比
51
+ FROM URIAGE_DATA;
35
52
  ```

1

「回答へのコメント」に対して内容を追記

2023/08/19 08:50

投稿

neko_the_shadow
neko_the_shadow

スコア2395

answer CHANGED
@@ -20,4 +20,16 @@
20
20
  |75|33|NULL|
21
21
  |76|222|189|
22
22
  |77|366|144|
23
- |78|75|-291|
23
+ |78|75|-291|
24
+
25
+ ---
26
+ **2023-08-19 17:20追記**
27
+
28
+ 「回答へのコメント」にあるイメージを実現する方法はいくつかあると思いますが、たとえば以下のようなSQLはどうでしょうか。
29
+
30
+ ```SQL
31
+ SELECT SUM(URIAGE_GAK)
32
+ FROM URIAGE_DATA
33
+ WHERE SHIWAKE_YYMM <= DATE_FORMAT(CURDATE(), '%Y%m')
34
+ AND SHIWAKE_KI = CASE WHEN MONTH(CURDATE())<=3 THEN YEAR(CURDATE())-1948 ELSE YEAR(CURDATE())-1947 END;
35
+ ```