Предполагая, что вы пытаетесь сказать, что пара Fname / Lname является уникальным ключом, который позволяет вам сопоставлять строки:
declare @Folks as table ( CustId int, Fname varchar(10), Lname varchar(10),
Address1 varchar(10), Address2 varchar(10),
Zip varchar(9), State varchar(2), LoadDate date, Flag char(1) )
insert into @Folks ( CustId, Fname, Lname, Address1, Address2, Zip, State, LoadDate, Flag ) values
( 1, 'John', 'Leo', 'xxx', 'xxx', '34532', 'VA', '1/1/2012', '-' ),
( 2, 'Mike', 'Saunder', 'xxx', 'xxx', '94090', 'CA', '1/1/2012', '-' ),
( 3, 'Mike', 'Saunder', 'rrr', 'xxx', '94090', 'CA', '2/1/2012', '-' )
-- Before setting the Flag.
select * from @Folks
-- Computing a flying flag rather than using a stored value.
select *, case when LoadDate = ( select MAX(LoadDate) from @Folks as S where S.Fname = O.Fname and S.Lname = O.Lname ) then 'Y' else 'N' end as 'FlyingFlag'
from @Folks as O
-- Updating all stored values. Every bloody row.
update @Folks
set Flag = case when LoadDate = ( select MAX(LoadDate) from @Folks as S where S.Fname = O.Fname and S.Lname = O.Lname ) then 'Y' else 'N' end
from @Folks as O
-- Showing the result.
select * from @Folks
РЕДАКТИРОВАТЬ: Я все еще думаю, что это не то направление, которым вы хотите бытьзаголовок.Например, он не может корректно размещать более одного обновления для каждого клиента в день, если только вы не полагаетесь на то, что CustId является средством разрыва связей.
Немного лучшим решением было бы заменить флаг на поле PreviousId, котороеNULL в первой строке для клиента, а в последующих - содержит CustId заменяемой строки.Это связывает воедино изменения для каждого клиента и обеспечивает четко определенный заказ в случае, если клиент обновляется неоднократно в одну дату.