回答編集履歴
2
説明追記
answer
CHANGED
@@ -12,11 +12,9 @@
|
|
12
12
|
| 3 | 6月 |
|
13
13
|
|
14
14
|
|
15
|
-
|
15
|
+
下記のSQLでユニオンクエリと同じ結果になります。SQLはかなりシンプルになります。(テーブルは一つ増えますが)
|
16
16
|
|
17
17
|
```sql
|
18
|
-
INSERT INTO
|
19
|
-
Newテーブル (OLdID, 案件名, 年度, 月度, 売上)
|
20
18
|
SELECT
|
21
19
|
Oldテーブル.ID AS OLdID,
|
22
20
|
Oldテーブル.案件名,
|
@@ -30,4 +28,27 @@
|
|
30
28
|
Oldテーブル.年度=2021;
|
31
29
|
```
|
32
30
|
|
33
|
-
6月度までのSQLですが、同様にして3月度まで増やせばいいでしょう。
|
31
|
+
6月度までのSQLですが、同様にして3月度まで増やせばいいでしょう。
|
32
|
+
|
33
|
+
---
|
34
|
+
|
35
|
+
> 本来は、UpdateとRIGHT JOINで更新・追加を同時にしたいと思っていたのですが、
|
36
|
+
新しいデータベース側のSQL命令でRIGHT JOINが用意されてなく、
|
37
|
+
LEFT JOINしか対応しないために、更新しかできず追記がどうしても出来なかったため、
|
38
|
+
今は更新と追記を別々のクエリで作ってみています。
|
39
|
+
|
40
|
+
上記のSQLをQ1と名前をつけて保存して、下記のようなSQLで更新と追加が同時にできます。
|
41
|
+
|
42
|
+
```sql
|
43
|
+
UPDATE
|
44
|
+
Q1 LEFT JOIN Newテーブル
|
45
|
+
ON Q1.OLdID = Newテーブル.OldID
|
46
|
+
SET
|
47
|
+
Newテーブル.OldID = [Q1].[OLdID],
|
48
|
+
Newテーブル.案件名 = [Q1].[案件名],
|
49
|
+
Newテーブル.年度 = [Q1].[年度],
|
50
|
+
Newテーブル.月度 = [Q1].[月度],
|
51
|
+
Newテーブル.売上 = [Q1].[売上];
|
52
|
+
```
|
53
|
+
|
54
|
+
クエリが2つになるのを避けたいなら、Q1をサブクエリにすれば一つのクエリにできます。
|
1
コード修正
answer
CHANGED
@@ -25,7 +25,9 @@
|
|
25
25
|
Choose([月度ID], [4月度売上], [5月度売上], [6月度売上]) AS 売上
|
26
26
|
FROM
|
27
27
|
Oldテーブル,
|
28
|
-
月度マスタ
|
28
|
+
月度マスタ
|
29
|
+
WHERE
|
30
|
+
Oldテーブル.年度=2021;
|
29
31
|
```
|
30
32
|
|
31
33
|
6月度までのSQLですが、同様にして3月度まで増やせばいいでしょう。
|