Сложность в создании запроса итогов обновления для одной и той же таблицы. - PullRequest
1 голос
/ 10 августа 2010

Рассмотрим следующую таблицу:

ID nonUniqueID value total
--------------------------
1  12345        5     x
2  12345        10    x
3  789          20    x
4  789          5     x

Мне нужно сделать запрос примерно так (psuedo SQL), который будет работать в Access 2007:

UPDATE table 
SET total = SUM(value) 
WHERE nonUniqueID IS SAME;

Результат должен быть следующим:

ID nonUniqueID value total
--------------------------
1  12345        5     15
2  12345        10    15
3  789          20    25
4  789          5     25

Я пробовал групповые поездки, но у меня были странные результаты, которые, честно говоря, я не мог интерпретировать. Кто-нибудь знает, как я мог достичь чего-то подобного?

Ответы [ 2 ]

3 голосов
/ 10 августа 2010

Не уверен, работает ли это в Access или нет, но попробуйте:

update table t1
inner join (
    select nonUniqueID, sum(value) as SumValue
    from table
    group by nonUniqueID 
) t2 on t1.nonUniqueID = t2.nonUniqueID
set t1.total = t2.SumValue

Обновление: Исходя из этого вопроса , похоже, что оно не будет работать. Но попробуйте! Если этого не произойдет, вы можете использовать подход, предложенный в этом вопросе.

2 голосов
/ 10 августа 2010

Другой возможный вариант:

update t 
set total = (select SUM(value) from table where nonUniqueID = t.nonUniqueID)
from table t
...