我有一个相当简单的SQL任务,我想为我提出的解决方案进行验证(或指导)。感谢您的帮助! (这是我的第一篇文章)SQL - 在匹配记录间复制数据
这里是我面临的问题(简体):
我从平面文件导入用户信息到一个临时表(使用SSIS)。每个用户将有2或3个记录。每一行将包含重要数据。最终的结果需要为每用户1分的记录,它包含所有3
信息下面是数据的一个例子:
PK | Name | UniqueCustID | Info1 | Info2 | Info3 |
----------------------
1 | John Doe | 12345 | Opt1 | NULL | NULL
2 | John Doe | 12345 | NULL | Opt2 | NULL
3 | John Doe | 12345 | NULL | NULL | Opt3
最终的结果需要是是这样的:
PK | Name | UniqueCustID | Info1 | Info2 | Info3 |
----------------------
1 | John Doe | 12345 | Opt1 | Opt2 | Opt3
我试图尽可能保持简单。我想要在SSIS(或一对)中使用基本的执行SQL任务来处理这个问题。什么是人们的跳跃反应?我可以提供任何其他信息吗?再次感谢你。
UPDATE - 要显示的两步过程我想:
1)本应该使所有个人客户的集相匹配:
WITH CustInfoTMP (UniqueCustID,Info1,Info2,Info3)
AS
(
SELECT UniqueCustID,MAX(Info1),MAX(Info2),MAX(Info3)
FROM CustStaging
GROUP BY UniqueCustID
)
UPDATE CustStaging
SET
CustStaging.Info1 = CustInfoTMP.Info1
CustStaging.Info2 = CustInfoTMP.Info2
CustStaging.Info3 = CustInfoTMP.Info3
FROM CustStaging
INNER JOIN CustStagingTMP ON CustStaging.UniqueCustID = CustStagingTMP.UniqueCustID
2)然后我用这删除重复记录:
DELETE
FROM CustStaging
WHERE UniqueCustID NOT IN
(
SELECT MAX(PK)
FROM CustStaging
GROUP BY UniqueCustID
)
我希望大家都关注这个。我真的很感激反馈。
你想要什么,如果第2行有'Opt4'在'Info1'列? – 2012-02-13 16:10:12
@AaronBertrand - 这是一个很好的问题,我没有想过。现在,我们可以假设Info1/info2/info3列中的信息对于相同的客户始终是相同的。 – JohnnyMatthys 2012-02-13 17:09:20
这是个答案吗?我不确定我是否遵守。 – 2012-02-13 17:09:52