Предполагая, что в таблице Address используется суррогатный первичный ключ, основанный на целых числах (например, столбец IDENTITY), и, если вам действительно все равно, какой из них помечен как DEFAULT, вы можете сделать что-то вроде следующего (который обновляет строку с самым низким целочисленным значением как DEFAULT).
DECLARE @Addresses TABLE
(
AddressID INT ,
CustomerID INT ,
AddressType VARCHAR(8)
)
INSERT INTO @Addresses
( AddressID ,
CustomerID ,
AddressType
)
SELECT 1 ,
1 ,
NULL --Client 1 has 3 addresss
UNION ALL
SELECT 2 ,
1 ,
NULL
UNION ALL
SELECT 3 ,
1 ,
NULL
UNION ALL
SELECT 4 ,
2 ,
NULL --Client 2 has 1 addresses
UNION ALL
SELECT 5 ,
3 ,
NULL --Client 3 has 2 addresses
UNION ALL
SELECT 6 ,
3 ,
NULL
SELECT *
FROM @Addresses a
--update an arbitrary address ASSUMING that you used an integer for a surrogate primary key
UPDATE @Addresses
SET AddressType = CASE WHEN AddressID IN ( SELECT MIN(AddressID)
FROM @Addresses a
GROUP BY a.CustomerID ) THEN 'Default'
ELSE 'Shipping'
END
SELECT *
FROM @Addresses a