SQL Server 2005 - 以一对多关系更新表

时间:2015-10-21 16:14:29

标签: sql sql-server-2005

我有一个临时表,它是从平面文件创建的,并在复制到最终目标之前进行了修改。如果需要,将插入一些记录并更新其余记录。

我唯一的问题是它是一对多的关系。该表是零售商列表,其中一些是使用相同的商店名称和SS#多次输入但具有不同的联系类型。

像这样:

Store_ID   SS#         First_Name     Last_Name        Type  Description
________________________________________________________________________
1234       123-12-1234 JP             Crawford         A     Owner
1234       123-12-1234 JP             Crawford         D     Other Contact 1
1234       987-76-9876 Aaron          Nola             E     Other Contact 2
1236       321-12-3210 Mikael         Franco           A     Manager
1236       321-12-3210 Mikael         Franco           J     Other Contact 7

当存在重复的store_id / SS#时,我需要能够选择其中一条记录。没有可用日期,所以我不知道最后添加了哪条记录。如果其中一个记录是"所有者"另一个是"其他联系人"我可以假设正确的是"所有者"。如果其中一个是"经理"例如。但是有一些例子,其中一条记录可能是"其他联系人5"接下来是"其他联系人6"。

非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

假设最高类型(例如A)是您希望在复制时选择的类型,则以下内容应该有效:

SELECT temp.store_id, temp.ss#, temp.first_name,
    temp.last_name, temp.type, temp.description
FROM
  (SELECT t.store_id, t.ss#, t.first_name,t.last_name, 
      t.type, t.description, 
      ROW_NUMBER() OVER(PARTITION BY t.store_id,ss# ORDER BY t.type) num
      FROM YourTable t) temp
WHERE temp.num=1;