2012-05-09 3 views
-1

Таблица 1:Совокупное состояние запроса

ID  Total1 Total2 Total3 
1   10  0   20 
1   40  0   50 
1   15  0   5 

Таблица 2:

ID  Total 

1  140 

Как добавить кумулятивно все строки и найти общее соответствия в table2?

Как добавить кумулятивно все строки и найти итоговое соответствие NOT в таблице2 и написать инструкцию обновления для обновления (добавить их) и написать в таблицу2?

select sum(t1.total1) + sum(t1.total2) +sum(t1.total3) as "Total" from 
table t1, table t2 where t1.ID=t2.ID and sum(t1.total1) + 
sum(t1.total2) +sum(t1.total3)=t2.total; 

Я не могу получить корректный синтаксис обновления.

+0

Вам не хватает «GROUP BY ID» там нет? –

+0

Это домашнее задание? – Tejs

+0

Можете ли вы описать, что должен делать запрос в представленном вами сценарии (каков ожидаемый результат)? – GolfWolf

ответ

1

Похоже, у вас есть правильный запрос, чтобы найти итоговые суммы и сопоставить их. Для того, чтобы обновить строки, которые не имеют одинаковое количество, вы можете использовать коррелировала подзапрос, как это:

UPDATE table2 
SET total = (
    SELECT SUM(Total1 + Total2 + Total3) FROM table1 
    WHERE id = table2.id 
    GROUP BY id 
) 

Или с объединением (немного сложнее, но, вероятно, быстрее)

UPDATE t2 
SET t2.total = t1.total 
FROM table2 t2 
INNER JOIN (
    SELECT id, SUM(Total1 + Total2 + Total3) as total FROM table1 
    GROUP BY id 
) t1 ON t1.id = t2.id 
WHERE t2.total <> t1.total 
0
select T1.* from 
(
    select t1.ID, sum(t1.total1) + sum(t1.total2) + sum(t1.total3) as Total 
    from table t1 
    group by t1.ID 
) t1 
inner join table t2 on t1.ID = t2.ID and t1.Total = t2.total 
Смежные вопросы