#sql #ms-access #select
#sql #ms-access #выберите
Вопрос:
В принципе, у меня есть таблица данных с большим количеством записей (более 10 000)
Все они имеют 4 общих поля, в которые должны быть введены данные. Уникальные данные — это ВРЕМЯ.
Я уже выполнил запрос групповой сортировки, который определил группу данных на основе этих 4 полей, а затем рассчитал среднее время для каждой группы.
Теперь мне нужно повторно вставить среднее время по сравнению с реальным временем в таблицу, чтобы время каждой отдельной записи можно было сравнить со средним значением для ее типа.
Например, одна группа из запроса будет иметь результат
Процесс1, Неделя 2, Оператор3, Сдвиг4, среднее время = 120,70
Затем потребуется повторно вставить это среднее время во все записи, соответствующие этим критериям, но делать это для каждого группового результата и записи.
Возможно ли это вообще?
Ответ №1:
вам необходимо обновить таблицу с помощью подзапроса
update t1 set t1.timefield = s2.AvgOfTIME
from yourtable t1
inner join
(
-- you query for calculating avg time
)
as t2
on t1.Process1 = t2.Process1 and t1.Week2 = t2.Week2 and t1.Operator3 = t2.Operator3 and t1.Shift4 = t2.Shift4
Комментарии:
1. Привет, спасибо за ваш ответ. Моя проблема в том, что группа по запросу возвращает около 7000 различных групп. Поэтому я пытаюсь получить запрос на обновление для обновления всех записей, где они соответствуют соответствующей группе. Иначе мне пришлось бы либо создать 7000 запросов на обновление, либо сделать это вручную?
2. Я не знаю о вашей схеме таблиц, но думаю, что вам нужно сделать что-то вроде этого ‘ update t1 установите t1.timefield = s2.Среднее время из yourtable t1 inner join (выберите Process1, Week2, Operator3, Shift4, среднее время (timefield) как среднее время из yourtable group по Process1, Week2, Operator3,Shift4, среднее значение (timefield)) как t2 на t1. Процесс1 = t2.Процесс1 и t1.Неделя 2 = t2.Неделя 2 и t1. Operator3 = t2.Operator3 и t1.Shift4 = t2.Shift4’