伪SQL?名字和姓氏重复但城市不同的所有记录?
我需要找到所有的记录,名字是重复的,姓氏是重复的,但是城市对于名字重复的记录是不同的 因此,我的数据如下所示:伪SQL?名字和姓氏重复但城市不同的所有记录?,sql,sql-server,database,Sql,Sql Server,Database,我需要找到所有的记录,名字是重复的,姓氏是重复的,但是城市对于名字重复的记录是不同的 因此,我的数据如下所示: FirstName LastName CustomerFileLocation City ---------------------------------------------------------------------- Joe Smith c:\file1\File1.txt Dallas
FirstName LastName CustomerFileLocation City
----------------------------------------------------------------------
Joe Smith c:\file1\File1.txt Dallas
Joe Jones c:\File2\File1.txt New York
Joe Smith c:\File3\File1.txt New Mexico City
Harry Smith c:\File4\File1.txt Boca Raton
Joe Smith c:\File3\File1.txt Dallas
Michael Smith c:\File1\File1.txt Dallas
我希望查询返回
Joe Smith c:\file1\File1.txt Dallas
Joe Smith c:\File3\File1.txt New Mexico City
我写了以下内容来查找匹配的FirstName和LastName。但我不知道该怎么说和城市不匹配
SELECT
dbo.TblFileCache.FirstName, dbo.TblFileCache.LastName,
dbo.TblFileCache.ClaimFilePath, dbo.TblFileCache.Skip
FROM
dbo.TblFileCache
INNER JOIN
(SELECT
FirstName, LastName, COUNT(*) AS CountOf
FROM
dbo.TblFileCache AS tblFileCache_1
GROUP BY
FirstName, LastName
HAVING
(COUNT(*) > 1)) AS dt ON dbo.TblFileCache.FirstName = dt.FirstName
AND dbo.TblFileCache.LastName = dt.LastName
WHERE
(dbo.TblFileCache.Skip = 0)
ORDER BY
dbo.TblFileCache.FirstName, dbo.TblFileCache.LastName
要获取原始数据中一组用户名具有多个城市的所有行,可以使用窗口函数:
select t.*
from (select t.*,
min(city) over (partition by FirstName, LastName) as mincity,
max(city) over (partition by FirstName, LastName) as maxcity
from dbo.TblFileCache t
) t
where mincity <> maxcity;
如果您希望每个城市有一行,可以在此基础上进行聚合:
select FirstName, LastName, min(CustomerFileLocation) as CustomerFileLocation, city
from (select t.*,
min(city) over (partition by FirstName, LastName) as mincity,
max(city) over (partition by FirstName, LastName) as maxcity
from dbo.TblFileCache t
) t
where mincity <> maxcity
group by FirstName, LastName, City;
为什么您的查询只返回达拉斯的一行?数据中有两行,请解释清楚。1.首先,我们可以找到所有行集合,其中First aname多次出现,last name多次出现。但是,您可能希望在所有行集合中,一对名、姓出现多次?2.那么,您想要表格中城市唯一的所有行中的行吗?或者每个集合中具有该集合唯一城市的行?3.跳过和点餐怎么样。或者,也许到了,但是城市是不同的,因为记录中的名称是重复的,你只是重复地说,在具有相同名称对的行中,城市可以是不同的?