Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как обновить максимальным значением  [new]
londinium
Member

Откуда: Киев
Сообщений: 1199
Всем здравствуйте,

Есть
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) 
	Jun 17 2011 00:54:03 
	Copyright (c) Microsoft Corporation
	Enterprise Edition (64-bit) on Windows NT 5.2 <X64> (Build 3790: Service Pack 2)

И таблицы (из скрипта убраны внешние ключи и дополнительные поля)
DECLARE @Person TABLE
(
  Person_ID INT NOT NULL,
  INN       BIGINT NOT NULL,
  Surname   VARCHAR(50)
)
DECLARE @PersonAddress TABLE
(
  Address_ID INT NOT NULL,
  Person_ID  INT NOT NULL,
  CityName   VARCHAR(70)NOT NULL
)

INSERT @Person(Person_ID,INN,Surname)
 VALUES(1,288,'IVANOFF'),
       (2,288,'IVANOFF'),
       (3,289,'PETROFF');

INSERT @PersonAddress(Address_ID,Person_ID,CityName)
 VALUES(1,1,'KIEV'),
       (2,2,'KHARKOV'),
       (3,3,'SEVASTOPOL');

Есть задача:
Нужно в таблице @PersonAddress обновить поле Person_ID максимальным Person_ID из таблицы @Person по ИНН,
т.е. для 'IVANOFF' (INN=288) нужно взять значение Person_ID=2 и обновить этим значением первую строку в таблице @PersonAddress.
Очень надеюсь, что объяснил понятно

Заранее спасибо за ответы.
15 июн 12, 10:03    [12717504]     Ответить | Цитировать Сообщить модератору
 Re: Как обновить максимальным значением  [new]
Добрый Э - Эх
Guest
merg into ...
...
using (...)
...


Либо банальный апдейт с подзапросом в SET-кляузе
15 июн 12, 10:08    [12717544]     Ответить | Цитировать Сообщить модератору
 Re: Как обновить максимальным значением  [new]
Добрый Э - Эх
Guest
Букву не дописал:
Добрый Э - Эх
mergE into ...
...
using (...)
...


Либо банальный апдейт с подзапросом в SET-кляузе
15 июн 12, 10:09    [12717547]     Ответить | Цитировать Сообщить модератору
 Re: Как обновить максимальным значением  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
londinium,
как один из вариантов
+

       ;
with  zz
        as ( select max(Person_ID) as m_Person_ID
                  , INN
             from   @Person
             group by inn
           )
  update  pa
  set     Person_ID = z.m_Person_ID
  from    @PersonAddress pa
  inner join @Person p on p.Person_ID = pa.Person_ID
  inner join zz z on z.inn = p.INN
  where   not exists ( select 1
                       from   zz z1
                       where  z1.m_Person_ID = pa.Person_ID )
       
select  *
from    @PersonAddress

15 июн 12, 10:14    [12717584]     Ответить | Цитировать Сообщить модератору
 Re: Как обновить максимальным значением  [new]
londinium
Member

Откуда: Киев
Сообщений: 1199
автор
как один из вариантов

Спасибо большое. Работает. Ура!!!
15 июн 12, 10:26    [12717647]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить