質問編集履歴
3
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
2
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
1
test
CHANGED
File without changes
|
test
CHANGED
@@ -87,305 +87,3 @@
|
|
87
87
|
しかしこのSQLを動かしたところ、3時間以上かかっても、1日分のデータも出しきれていませんでした。
|
88
88
|
|
89
89
|
方法は良さそうなのですが、実用に足るスピードアップの方法を考えているところです。
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
以下に使用SQLを書きます(ややうろ覚えなので疑問点あればお願いいたします)。
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
--このSQLで動かした結果、3時間経過しても全データ抽出ができませんでした。
|
98
|
-
|
99
|
-
--今後の利用も考えて長くても20~30分くらいで取得できるようにしたいです。
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
DECLARE
|
106
|
-
|
107
|
-
@MASTER_YM AS NUMERIC
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
/** M_物流製品親子マスタ(工場系)は過去マスタデータを蓄積するので、最新月しか持たないM_サイズ処理定義マスタ(地区系)と齟齬が起きないように使用年月を固定しています **/
|
112
|
-
|
113
|
-
SET @MASTER_YM=(SELECT MAX([年月]) FROM [BI_T].[dbo].[M_サイズ処理定義マスタ]);
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
WITH
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
/*********************************************************
|
122
|
-
|
123
|
-
日付範囲
|
124
|
-
|
125
|
-
**********************************************************/
|
126
|
-
|
127
|
-
[WK_日付範囲] AS (
|
128
|
-
|
129
|
-
SELECT TOP 7 CONVERT(DATE, CONVERT(CHAR(8), MAX([年月日])), 112) AS [対象年月日]
|
130
|
-
|
131
|
-
FROM
|
132
|
-
|
133
|
-
(SELECT TOP 7 年月日 FROM [BI_T].[dbo].[T_受注残] GROUP BY 年月日 ORDER BY 年月日 DESC
|
134
|
-
|
135
|
-
UNION
|
136
|
-
|
137
|
-
SELECT TOP 7 年月日 FROM [BI_T].[dbo].[T_地区在庫] GROUP BY 年月日 ORDER BY 年月日 DESC
|
138
|
-
|
139
|
-
)W
|
140
|
-
|
141
|
-
GROUP BY [年月日]
|
142
|
-
|
143
|
-
ORDER BY [年月日] DESC
|
144
|
-
|
145
|
-
),
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
/*********************************************************
|
150
|
-
|
151
|
-
年月日計算
|
152
|
-
|
153
|
-
**********************************************************/
|
154
|
-
|
155
|
-
[WK_表示年月日計算] AS (
|
156
|
-
|
157
|
-
SELECT [基準日], DATEADD(d, -1, [基準日]) AS [集計対象最終日]
|
158
|
-
|
159
|
-
FROM
|
160
|
-
|
161
|
-
(
|
162
|
-
|
163
|
-
SELECT [対象年月日] AS [基準日] FROM [WK_日付範囲]
|
164
|
-
|
165
|
-
)Y
|
166
|
-
|
167
|
-
),
|
168
|
-
|
169
|
-
[WK_取得開始日割当] AS (
|
170
|
-
|
171
|
-
SELECT [基準日],[集計対象最終日],
|
172
|
-
|
173
|
-
DATEFROMPARTS(YEAR([集計対象最終日]), MONTH([集計対象最終日]), 1) AS [集計対象初日]
|
174
|
-
|
175
|
-
FROM [WK_表示年月日計算]
|
176
|
-
|
177
|
-
),
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
/*********************************************************
|
182
|
-
|
183
|
-
マスタテーブル --WHERE条件等は、区分の決まりごとなのできにしないでください
|
184
|
-
|
185
|
-
**********************************************************/
|
186
|
-
|
187
|
-
[TMP_マスタテーブル] AS (
|
188
|
-
|
189
|
-
SELECT CONVERT(DATE, CONVERT(CHAR(8), MAX([年月日])), 112) AS [日付]
|
190
|
-
|
191
|
-
, [倉庫コード]
|
192
|
-
|
193
|
-
, [製品コード親]
|
194
|
-
|
195
|
-
, [本数]
|
196
|
-
|
197
|
-
FROM
|
198
|
-
|
199
|
-
(SELECT
|
200
|
-
|
201
|
-
T0.[年月日]
|
202
|
-
|
203
|
-
, T0.[出荷先コード] AS [倉庫コード]
|
204
|
-
|
205
|
-
, CASE
|
206
|
-
|
207
|
-
WHEN M0.[製品コード親] IS NULL THEN T0.[製品コード]
|
208
|
-
|
209
|
-
ELSE M0.[製品コード親]
|
210
|
-
|
211
|
-
END AS [製品コード親]
|
212
|
-
|
213
|
-
, T0.[出荷本数] AS [本数]
|
214
|
-
|
215
|
-
FROM
|
216
|
-
|
217
|
-
[BI_T].[dbo].[T_工場出荷] T0
|
218
|
-
|
219
|
-
LEFT OUTER JOIN
|
220
|
-
|
221
|
-
[BI_T].[dbo].[M_物流製品親子マスタ] M0
|
222
|
-
|
223
|
-
ON
|
224
|
-
|
225
|
-
T0.[製品コード] = M0.[製品コード]
|
226
|
-
|
227
|
-
AND @MASTER_YM = M0.[年月]
|
228
|
-
|
229
|
-
WHERE
|
230
|
-
|
231
|
-
T0.[品種] = 'AT'
|
232
|
-
|
233
|
-
AND T0.[内訳] NOT IN ('6','9')
|
234
|
-
|
235
|
-
AND T0.[需要先]='1'
|
236
|
-
|
237
|
-
AND SUBSTRING(ISNULL(M0.[製品コード親], T0.[製品コード]), 4, 1) != 'T'
|
238
|
-
|
239
|
-
AND LEN(T0.[出荷先コード]) > 7 --直送は不要
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
UNION ALL
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
SELECT
|
248
|
-
|
249
|
-
T0.[年月日]
|
250
|
-
|
251
|
-
, T0.[出荷先コード] AS [倉庫コード]
|
252
|
-
|
253
|
-
, CASE
|
254
|
-
|
255
|
-
WHEN M0.[製品コード親] IS NULL THEN T0.[DOT製品コード親]
|
256
|
-
|
257
|
-
ELSE M0.[製品コード親]
|
258
|
-
|
259
|
-
END AS [製品コード親]
|
260
|
-
|
261
|
-
, T0.[出荷本数] AS [本数]
|
262
|
-
|
263
|
-
FROM
|
264
|
-
|
265
|
-
[BI_T].[dbo].[T_地区出荷] T0
|
266
|
-
|
267
|
-
LEFT OUTER JOIN
|
268
|
-
|
269
|
-
[BI_T].[dbo].[M_サイズ処理定義マスタ] M0
|
270
|
-
|
271
|
-
ON
|
272
|
-
|
273
|
-
T0.[DOT製品コード親] = M0.[DOT製品コード親]
|
274
|
-
|
275
|
-
WHERE
|
276
|
-
|
277
|
-
T0.[品種] = 'AT'
|
278
|
-
|
279
|
-
AND T0.[内訳] NOT IN ('6','9')
|
280
|
-
|
281
|
-
AND SUBSTRING(ISNULL(M0.[製品コード親], T0.[DOT製品コード親]), 4, 1) != 'T'
|
282
|
-
|
283
|
-
AND T0.[受払区分] IN ('C3','G3')
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
UNION ALL
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
SELECT
|
292
|
-
|
293
|
-
T0.[年月日]
|
294
|
-
|
295
|
-
, T0.[出荷先コード] AS [倉庫コード]
|
296
|
-
|
297
|
-
, CASE
|
298
|
-
|
299
|
-
WHEN M0.[製品コード親] IS NULL THEN T0.[DOT製品コード親]
|
300
|
-
|
301
|
-
ELSE M0.[製品コード親]
|
302
|
-
|
303
|
-
END AS [製品コード親]
|
304
|
-
|
305
|
-
, (T0.[入荷本数]*-1) AS [本数]
|
306
|
-
|
307
|
-
FROM
|
308
|
-
|
309
|
-
[BI_T].[dbo].[T_地区入荷] T0
|
310
|
-
|
311
|
-
LEFT OUTER JOIN
|
312
|
-
|
313
|
-
[BI_T].[dbo].[M_サイズ処理定義マスタ] M0
|
314
|
-
|
315
|
-
ON
|
316
|
-
|
317
|
-
T0.[DOT製品コード親] = M0.[DOT製品コード親]
|
318
|
-
|
319
|
-
WHERE
|
320
|
-
|
321
|
-
T0.[品種] = 'AT'
|
322
|
-
|
323
|
-
AND T0.[内訳] NOT IN ('6','9')
|
324
|
-
|
325
|
-
AND SUBSTRING(ISNULL(M0.[製品コード親], T0.[DOT製品コード親]), 4, 1) != 'T'
|
326
|
-
|
327
|
-
AND T0.[受払区分] = 'C5'
|
328
|
-
|
329
|
-
AND LEN(T0.[出荷元コード]) > 7
|
330
|
-
|
331
|
-
)Z
|
332
|
-
|
333
|
-
GROUP BY
|
334
|
-
|
335
|
-
[倉庫コード]
|
336
|
-
|
337
|
-
, [製品コード親]
|
338
|
-
|
339
|
-
, [本数]
|
340
|
-
|
341
|
-
),
|
342
|
-
|
343
|
-
[TMP_コードグルーピング] AS (
|
344
|
-
|
345
|
-
SELECT DISTINCT [倉庫コード],[製品コード親] FROM [TMP_マスタテーブル]
|
346
|
-
|
347
|
-
)
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
SELECT
|
352
|
-
|
353
|
-
CAST((CONVERT(VARCHAR,[基準日],112))AS NUMERIC) AS [年月日]
|
354
|
-
|
355
|
-
, [倉庫コード]
|
356
|
-
|
357
|
-
, [製品コード親]
|
358
|
-
|
359
|
-
, (SELECT SUM([本数])
|
360
|
-
|
361
|
-
FROM
|
362
|
-
|
363
|
-
[TMP_マスタテーブル] M01
|
364
|
-
|
365
|
-
WHERE
|
366
|
-
|
367
|
-
M01.[倉庫コード]=TM.[倉庫コード] AND M01.[製品コード親]=TM.[製品コード親]
|
368
|
-
|
369
|
-
AND
|
370
|
-
|
371
|
-
M01.[日付] BETWEEN WK.[集計対象初日] AND WK.[集計対象最終日]) AS [本数]
|
372
|
-
|
373
|
-
FROM
|
374
|
-
|
375
|
-
[WK_取得開始日割当] WK, [TMP_コードグルーピング] TM
|
376
|
-
|
377
|
-
WHERE
|
378
|
-
|
379
|
-
(SELECT SUM([本数])
|
380
|
-
|
381
|
-
FROM
|
382
|
-
|
383
|
-
[TMP_マスタテーブル] M01
|
384
|
-
|
385
|
-
WHERE
|
386
|
-
|
387
|
-
M01.[倉庫コード]=TM.[倉庫コード] AND M01.[製品コード親]=TM.[製品コード親]
|
388
|
-
|
389
|
-
AND
|
390
|
-
|
391
|
-
M01.[日付] BETWEEN WK.[集計対象初日] AND WK.[集計対象最終日]) IS NOT NULL
|