Cat*_*ler 4 sql t-sql sql-server sql-server-2008
这是我的表值.(7条记录)
SELECT * FROM tbl1
Run Code Online (Sandbox Code Playgroud)
因为我的代表很低,我无法发布图片.所以我在这里链接 http://i.stack.imgur.com/CFl0u.png
我写了一个查询以避免最后一条记录,但我仍然得到最后一条记录.(我需要的只是不同的电子邮件)
SELECT DISTINCT CandEmail,CandName,EmployerId,ContNum,IsDeleted,CandPortalId FROM tbl1
WHERE EmployerId = 7 AND IsDeleted = 0
Run Code Online (Sandbox Code Playgroud)
上述查询仍然检索具有上一个重复电子邮件记录的相同7条记录.
你可以使用ROW_NUMBERwith OVER子句:
WITH CTE AS
(
SELECT CandEmail,CandName,EmployerId,ContNum,IsDeleted,CandPortalId
, RN = ROW_NUMBER() OVER (PARTITION BY CandEmail ORDER BY ContNum DESC)
FROM tbl1
WHERE IsDeleted = 0
)
SELECT CandEmail,CandName,EmployerId,ContNum,IsDeleted,CandPortalId
FROM CTE WHERE RN = 1
Run Code Online (Sandbox Code Playgroud)
在应用关联的窗口函数之前,确定行集的分区和排序.也就是说,OVER子句定义查询结果集中的窗口或用户指定的行集.然后,窗口函数计算窗口中每行的值.