我假设您有如下数据要清理:
名字 | 姓氏 | 公司名称 | 城市 | 状态
-------------------------------------------------- --------
鲍勃 | 史密斯 | 美国广播公司 | 纽约 | 纽约
鲍勃 | 史密斯 | 美国广播公司 | 纽瓦克 | 新泽西州
简 | 亚当斯 | ACME | 西雅图 | 西澳
因此,我假设您的意思是“他们各自的城市和州”是指“从相应行中随机选择的一个城市和州”,这实际上使问题变得困难:
WITH [Names] AS (
SELECT DISTINCT [FirstName], [LastName], [CompanyName]
FROM Table1
)
INSERT INTO Table2 ([FirstName], [LastName], [CompanyName], [City], [State])
SELECT [FirstName], [LastName], [CompanyName], [City], [State]
FROM [Names]
CROSS APPLY
(
SELECT TOP 1 [City], [State]
FROM Table1
WHERE Table1.[FirstName] = [Names].[FirstName]
AND Table1.[LastName] = [Names].[LastName]
AND Table1.[CompanyName] = [Names].[CompanyName]
) [FirstRespectiveAddress]
如果“一些随机行”对您不起作用,您将必须明确定义每个人要选择哪个城市和州。