我正在开发一个SSIS包,我将数据从CSV文件导入到SQL表中。
我唯一关注的字段是用户名。此用户名必须为 唯一 。我不在乎名字或姓氏是否相同。
在包中,我将文件中的数据导入临时SQL表。然后我使用SELECT DISTINCT选择唯一的用户名。然后插入目标表。
问题是:当我执行SELECT DISTINCT用户名,名字和姓氏来临时。
它返回:
但我希望它能够回归:
答案 0 :(得分:3)
SELECT DISTINCT
会为您指定的每个列选择所有不同的行,因此这并不是您想要的。
如果您的SQL风格支持它,请尝试使用GROUP BY
FIRST()
,如下所示。它将返回每个用户名的第一条记录。
SELECT Username, FIRST(Firstname), FIRST(Lastname)
FROM tempUsers
GROUP BY Username
如果没有,你必须使用行ID和子选择:
SELECT Username, FIRST(Firstname), FIRST(Lastname)
FROM tempUsers
WHERE RowID IN (SELECT MIN(RowID)
FROM tempUsers
GROUP BY Username)
**你不应该使用带有名字和姓氏的MIN,因为你无法保证它们会来自同一行: <击> 撞击>
<击>SELECT Username, MIN(Firstname), MIN(Lastname)
FROM tempUsers
GROUP BY Username
击> <击> 撞击>
答案 1 :(得分:0)
对于Oracle,您可以使用以下查询:
select * from tempusers where rowid in (
select min(rowid) from tempusers group by username);