回答編集履歴
1
Chooseと月度マスタを使用した方法についても動作を確認できました。
test
CHANGED
@@ -43,3 +43,87 @@
|
|
43
43
|
WHERE NOT EXISTS (SELECT * FROM Newテーブル WHERE (Newテーブル.FctID = base.FctID AND Newテーブル.月度 = base.月度) );
|
44
44
|
|
45
45
|
```
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
[追記]
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
ご提示頂きましたChooseを使用した方法もRIGHT JOINと共に動作したので、
|
54
|
+
|
55
|
+
追加・更新が1つのクエリ対応できました。やはりRIGHT JOINに関しては記述に問題があったようです。
|
56
|
+
|
57
|
+
都度全部のデータを更新すると重たいので、今後は更新日時からデータを絞り込んで
|
58
|
+
|
59
|
+
実行しようかと思っております。
|
60
|
+
|
61
|
+
おかげさまでかなりシンプルなSQLになり大変助かりました。
|
62
|
+
|
63
|
+
皆様、ありがとうございました。
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
```SQL
|
68
|
+
|
69
|
+
UPDATE Newテーブル AS T1
|
70
|
+
|
71
|
+
RIGHT JOIN (
|
72
|
+
|
73
|
+
SELECT [Oldテーブル].案件名,
|
74
|
+
|
75
|
+
[Oldテーブル].ID AS FctID,
|
76
|
+
|
77
|
+
[Oldテーブル].[エリア],
|
78
|
+
|
79
|
+
[Oldテーブル].年度,
|
80
|
+
|
81
|
+
[Oldテーブル].支社 AS 所課,
|
82
|
+
|
83
|
+
[Oldテーブル].[クライアント名],
|
84
|
+
|
85
|
+
[Oldテーブル].商材,
|
86
|
+
|
87
|
+
[Oldテーブル].担当,
|
88
|
+
|
89
|
+
月度マスタ.月度,
|
90
|
+
|
91
|
+
Choose(月度マスタ.[月度ID], [3月Fct・売上], [4月Fct・売上], [5月Fct・売上], [6月Fct・売上], [7月Fct・売上], [8月Fct・売上], [9月Fct・売上], [10月Fct・売上], [11月Fct・売上], [12月Fct・売上], [1月Fct・売上], [2月Fct・売上] ) AS 売上予測,
|
92
|
+
|
93
|
+
Choose(月度マスタ.[月度ID], 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2 ) AS 月,
|
94
|
+
|
95
|
+
[Oldテーブル].[データ更新日時] AS 更新日時
|
96
|
+
|
97
|
+
FROM Oldテーブル, 月度マスタ ORDER BY [Oldテーブル].ID) AS base
|
98
|
+
|
99
|
+
ON (T1.月度 = base.月度) AND (T1.FctID = base.FctID)
|
100
|
+
|
101
|
+
SET
|
102
|
+
|
103
|
+
T1.FctID = base.FctID,
|
104
|
+
|
105
|
+
T1.年度 = base.年度,
|
106
|
+
|
107
|
+
T1.月度 = base.月度,
|
108
|
+
|
109
|
+
T1.月 = base.月,
|
110
|
+
|
111
|
+
T1.案件名 = base.案件名,
|
112
|
+
|
113
|
+
T1.クライアント名 = base.[クライアント名],
|
114
|
+
|
115
|
+
T1.エリア = base.[エリア],
|
116
|
+
|
117
|
+
T1.商材 = base.商材,
|
118
|
+
|
119
|
+
T1.担当 = base.担当,
|
120
|
+
|
121
|
+
T1.所課 = base.所課,
|
122
|
+
|
123
|
+
T1.売上予測 = base.売上予測,
|
124
|
+
|
125
|
+
T1.更新日時 = base.更新日時
|
126
|
+
|
127
|
+
;
|
128
|
+
|
129
|
+
```
|