回答編集履歴

2

説明追記

2021/07/17 07:03

投稿

hatena19
hatena19

スコア33740

test CHANGED
@@ -26,15 +26,11 @@
26
26
 
27
27
 
28
28
 
29
- 追加クエリは下記のSQLになります。
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

コード修正

2021/07/17 07:03

投稿

hatena19
hatena19

スコア33740

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