Tsql 将SQL数据分为两个表

Tsql 将SQL数据分为两个表,tsql,Tsql,有个稍微棘手的问题,我想听听你的建议。我有一个源SQL表,需要将其分为两个单独的表。源包含一组列,包括邮政地址 我需要做的是将包含任何地址的第一个实例的行添加到第一个表中,然后将相同地址的任何后续事件(如果有)添加到第二个表中,并在第一个表中添加一列,其中包含该行的ID,以便连接 有人能建议怎么做吗?我更愿意将其全部保存在T-SQL MS SQL Server 2008中,但如果有必要,我可以在这个过程中拼凑一些C。您应该能够创建一个合适的CTE公共表表达式,并将这些地址分开。您没有提供太多的详

有个稍微棘手的问题,我想听听你的建议。我有一个源SQL表,需要将其分为两个单独的表。源包含一组列,包括邮政地址

我需要做的是将包含任何地址的第一个实例的行添加到第一个表中,然后将相同地址的任何后续事件(如果有)添加到第二个表中,并在第一个表中添加一列,其中包含该行的ID,以便连接


有人能建议怎么做吗?我更愿意将其全部保存在T-SQL MS SQL Server 2008中,但如果有必要,我可以在这个过程中拼凑一些C。

您应该能够创建一个合适的CTE公共表表达式,并将这些地址分开。您没有提供太多的详细信息,所以我尝试编写一些列和表名,并根据需要修改它们

尝试此操作-它将删除表中的所有重复项:

;WITH DuplicateAddr AS
(
    SELECT 
       (list of columns you need),
       ROW_NUMBER() OVER (PARTITION BY Street,ZipCode,City
                          ORDER BY DateLastChange DESC) 'RowNum'
    FROM dbo.Addresses
)
SELECT (list of columns) 
FROM DuplicateAddr
WHERE RowNum > 1
GO
使用这个CTE,您可以根据列列表对数据进行分区—使用您需要使用的列。根据您在CTE中定义的顺序,每个数据分区(例如街道、ZipCode、城市定义的每个地址)将获得序列号-我选择DateLastChange作为一种可能性

因此,RowNum=1的行构成了第一个地址集-您当然也可以插入到…中,而不仅仅是从DuplicateAddr中选择列。。。。基于这一标准


RowNum>1的所有行都是重复的或附加的地址-将它们插入第二个表。

绝对完美!非常感谢你!