У меня есть таблица (Банк) с такими записями -
BRANCH | CITY | STATE | ZIP
-----------------------------------------------
Corporate | City1 | State1 | Zip1
Corporate | City2 | State2 | Zip2
Corporate | City3 | State3 | Zip3
Corporate | City4 | State4 | Zip4
Corporate | City5 | State5 | Zip5
Corporate | City6 | State6 | Zip6
1 | City1 | State1 |
1 | City4 | State4 | Zip4
1 | City6 | State6 | Zip2
1 | City10 | State10 | Zip10
2 | City1 | State1 | Zip1
2 | City2 | State2 | Zip2
2 | City3 | State3 | Zip3
2 | City5 | State5 | Zip4
Необходимо обновить столбец ZIP для Branch «1» с помощью Branch «Corporate», сопоставив «City» и «State». Он не должен обновлять запись City10 Филиала 1, т.е. Zip должен оставаться Zip10. Конечный результат -
BRANCH | CITY | STATE | ZIP
-----------------------------------------------
Corporate | City1 | State1 | Zip1
Corporate | City2 | State2 | Zip2
Corporate | City3 | State3 | Zip3
Corporate | City4 | State4 | Zip4
Corporate | City5 | State5 | Zip5
Corporate | City6 | State6 | Zip6
1 | City1 | State1 | Zip1
1 | City4 | State4 | Zip4
1 | City6 | State6 | Zip6
1 | City10 | State10 | Zip10
2 | City1 | State1 | Zip1
2 | City2 | State2 | Zip2
2 | City3 | State3 | Zip3
2 | City5 | State5 | Zip4
Я использовал следующий SQL, но он обновляет записи Филиала 1, где соответствие Города и Штата не найдено для Корпоративного.
Update Bank T1
set T1.zip = (select max(T2.zip) from Bank T2 where T1.city = T2.city and T1.state = T2.state and T2.branch ='Corporate' )
where T1.branch = '1'