回答編集履歴
2
説明追記
test
CHANGED
@@ -26,15 +26,11 @@
|
|
26
26
|
|
27
27
|
|
28
28
|
|
29
|
-
|
29
|
+
下記のSQLでユニオンクエリと同じ結果になります。SQLはかなりシンプルになります。(テーブルは一つ増えますが)
|
30
30
|
|
31
31
|
|
32
32
|
|
33
33
|
```sql
|
34
|
-
|
35
|
-
INSERT INTO
|
36
|
-
|
37
|
-
Newテーブル (OLdID, 案件名, 年度, 月度, 売上)
|
38
34
|
|
39
35
|
SELECT
|
40
36
|
|
@@ -63,3 +59,49 @@
|
|
63
59
|
|
64
60
|
|
65
61
|
6月度までのSQLですが、同様にして3月度まで増やせばいいでしょう。
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
---
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
> 本来は、UpdateとRIGHT JOINで更新・追加を同時にしたいと思っていたのですが、
|
70
|
+
|
71
|
+
新しいデータベース側のSQL命令でRIGHT JOINが用意されてなく、
|
72
|
+
|
73
|
+
LEFT JOINしか対応しないために、更新しかできず追記がどうしても出来なかったため、
|
74
|
+
|
75
|
+
今は更新と追記を別々のクエリで作ってみています。
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
上記のSQLをQ1と名前をつけて保存して、下記のようなSQLで更新と追加が同時にできます。
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
```sql
|
84
|
+
|
85
|
+
UPDATE
|
86
|
+
|
87
|
+
Q1 LEFT JOIN Newテーブル
|
88
|
+
|
89
|
+
ON Q1.OLdID = Newテーブル.OldID
|
90
|
+
|
91
|
+
SET
|
92
|
+
|
93
|
+
Newテーブル.OldID = [Q1].[OLdID],
|
94
|
+
|
95
|
+
Newテーブル.案件名 = [Q1].[案件名],
|
96
|
+
|
97
|
+
Newテーブル.年度 = [Q1].[年度],
|
98
|
+
|
99
|
+
Newテーブル.月度 = [Q1].[月度],
|
100
|
+
|
101
|
+
Newテーブル.売上 = [Q1].[売上];
|
102
|
+
|
103
|
+
```
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
クエリが2つになるのを避けたいなら、Q1をサブクエリにすれば一つのクエリにできます。
|
1
コード修正
test
CHANGED
@@ -52,7 +52,11 @@
|
|
52
52
|
|
53
53
|
Oldテーブル,
|
54
54
|
|
55
|
-
月度マスタ
|
55
|
+
月度マスタ
|
56
|
+
|
57
|
+
WHERE
|
58
|
+
|
59
|
+
Oldテーブル.年度=2021;
|
56
60
|
|
57
61
|
```
|
58
62
|
|