написать заявление SQL для обновления данных для запроса ниже в sybase - PullRequest
0 голосов
/ 30 сентября 2011

у нас есть таблица 1:

ТАБЛИЦА 1

(col1,col2) values(A,2)
(col1,col2) values(A,3)
(col1,col2) values(A,5)
(col1,col2) values(B,6)
(col1,col2) values(B,1)
(col1,col2) values(C,2)

Теперь у нас есть таблица 2:

ТАБЛИЦА: 2

(col1,col2) values(A,null)
(col1,col2) values(B,null)
(col1,col2) values(C,null)

написать запрос, чтобы обновить сумму индивида col1 только из одного оператора.Не используйте временную таблицу.

ВЫХОД: таблица 2:

(col1,col2) values(A,9)
(col1,col2) values(B,7)
(col1,col2) values(C,2)

1 Ответ

0 голосов
/ 04 октября 2011

Вариант Oracle (надеюсь, что он работает и на Sybase):

create table TABLE1 (col1 varchar(1), col2 integer);

create table TABLE2 (col1 varchar(1), col2 integer);

insert into TABLE1 (col1,col2) values('A',2);

insert into TABLE1 (col1,col2) values('A',3);

insert into TABLE1 (col1,col2) values('A',5);

insert into TABLE1 (col1,col2) values('B',6);

insert into TABLE1 (col1,col2) values('B',1);

insert into TABLE1 (col1,col2) values('C',2);

insert into TABLE2 (col1,col2) values('A',null);

insert into TABLE2 (col1,col2) values('B',null);

insert into TABLE2 (col1,col2) values('C',null);

update TABLE2 t2 set COL2 = (select sum(t1.col2) from TABLE1 t1 where t1.col1 = t2.col1);

select * from TABLE2;

Насколько я помню, у Sybase есть собственный синтаксис обновления (я сам не могу проверить):

update TABLE2
set col2 = sum(t2.col1)
from TABLE1 t1, TABLE2 t2
where t1.col1 = t2.col2
...